Java for Beginner
672 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Введение в Spring JDBC

Spring JDBC — это модуль Spring Framework, который предоставляет упрощенный и гибкий API для работы с базами данных через JDBC (Java Database Connectivity). Он предлагает несколько ключевых преимуществ, таких как автоматическое управление ресурсами, снижение вероятности ошибок, связанных с закрытием соединений и операций транзакций, а также более удобный синтаксис по сравнению с нативным JDBC. Spring JDBC активно используется в проектах, где основное взаимодействие с базой данных идет через SQL-запросы без использования ORM-решений, таких как Hibernate.

Основные компоненты Spring JDBC

JdbcTemplate — центральный класс, который управляет выполнением SQL-запросов, обновлений и транзакций.
DataSource — абстракция для управления соединениями с базой данных. Это основной интерфейс для конфигурации соединений с БД.
RowMapper — интерфейс, используемый для отображения строк из результатов запроса в объекты Java.


Преимущества использования Spring JDBC

Управление ресурсами: Spring автоматически закрывает соединения и ресурсы, что снижает риск утечек памяти.
Шаблоны кода: JdbcTemplate упрощает создание SQL-запросов, так как многие стандартные задачи, такие как управление транзакциями, выполнены автоматически.
Обработка исключений: Spring JDBC предоставляет собственную иерархию исключений (например, DataAccessException), которая является унифицированной для всех источников данных и позволяет гибко обрабатывать ошибки.
Основные операции с JdbcTemplate
Для работы с базой данных в Spring используется класс JdbcTemplate, который предоставляет методы для выполнения операций SQL, таких как добавление, обновление, удаление и чтение данных.


Пример простого применения:
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;

public class UserDao {
private final JdbcTemplate jdbcTemplate;

public UserDao(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}

// Метод для добавления пользователя
public void addUser(String name, String email) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, name, email);
}
}


Пример CRUD операций с использованием JdbcTemplate

Создание (Create): метод update используется для выполнения операций вставки данных.
public void addUser(String name, String email) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, name, email);
}


Чтение (Read): метод queryForObject позволяет выполнять запрос и получать один объект.

public User getUserById(int id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, (rs, rowNum) ->
new User(rs.getInt("id"), rs.getString("name"), rs.getString("email"))
);
}


Обновление (Update): обновление данных происходит с помощью update.
public void updateUserEmail(int id, String email) {
String sql = "UPDATE users SET email = ? WHERE id = ?";
jdbcTemplate.update(sql, email, id);
}


Удаление (Delete): update также используется для удаления записей.
public void deleteUser(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}


#Java #Training #Spring #SpringJDBC
Создание и выполнение CRUD операций через Spring JDBC

Spring JDBC упрощает реализацию CRUD (Create, Read, Update, Delete) операций с базой данных. Для этого используются методы update и query из JdbcTemplate.

Шаги для реализации CRUD операций

1. Создание таблицы

Прежде чем выполнять CRUD операции, необходимо создать таблицу в базе данных.
String sql = """
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
)
""";
jdbcTemplate.execute(sql);


2. Create: Добавление записи


Для добавления записи используется метод update.
public void addUser(String name, String email) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, name, email);
}


Пример использования:
addUser("Jane Doe", "jane.doe@example.com");


3. Read: Получение записей


Получение всех записей:
public List<User> getAllUsers() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, new UserRowMapper());
}


Получение записи по ID:
public User getUserById(int id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new UserRowMapper());
}


4. Update: Обновление записи

Обновление данных пользователя:
public void updateUserEmail(int id, String email) {
String sql = "UPDATE users SET email = ? WHERE id = ?";
jdbcTemplate.update(sql, email, id);
}


Пример использования:
updateUserEmail(1, "updated.email@example.com");


5. Delete: Удаление записи

Удаление пользователя по ID:
public void deleteUserById(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}


Пример:
deleteUserById(1);


Реализация CRUD через DAO

Для удобства работы с данными обычно создается слой DAO (Data Access Object), который инкапсулирует CRUD операции.
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public class UserDao {

private final JdbcTemplate jdbcTemplate;

public UserDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

public void addUser(String name, String email) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, name, email);
}

public User getUserById(int id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new UserRowMapper());
}

public List<User> getAllUsers() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, new UserRowMapper());
}

public void updateUserEmail(int id, String email) {
String sql = "UPDATE users SET email = ? WHERE id = ?";
jdbcTemplate.update(sql, email, id);
}

public void deleteUserById(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}
}


Тестирование CRUD операций


Пример использования DAO:
public class Main {
public static void main(String[] args) {
AppConfig config = new AppConfig();
JdbcTemplate jdbcTemplate = config.jdbcTemplate();

UserDao userDao = new UserDao(jdbcTemplate);

// Добавление пользователя
userDao.addUser("John Smith", "john.smith@example.com");

// Получение всех пользователей
List<User> users = userDao.getAllUsers();
users.forEach(System.out::println);

// Обновление данных пользователя
userDao.updateUserEmail(1, "new.email@example.com");

// Удаление пользователя
userDao.deleteUserById(1);
}
}


#Java #Training #Spring #SpringJDBC