Ответ
Работа с БД в Java строится на нескольких уровнях абстракции, от низкоуровневого JDBC до высокоуровневых ORM-фреймворков.
1. JDBC (Java Database Connectivity) Базовый стандартный API для выполнения SQL-запросов. Требует ручного управления ресурсами и маппинга данных.
try (Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE id=?")) {
stmt.setInt(1, userId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} // Connection, Statement, ResultSet автоматически закроются
2. ORM (Object-Relational Mapping) Фреймворки Абстрагируют работу с БД, представляя таблицы как Java-объекты (Entity).
- JPA (Jakarta Persistence API) — стандартная спецификация. Основная реализация — Hibernate.
@Entity public class User { @Id @GeneratedValue private Long id; private String name; } @Repository public interface UserRepository extends JpaRepository<User, Long> {} - MyBatis — занимает промежуточное положение между JDBC и JPA, использует XML/аннотации для маппинга SQL.
3. Удобные надстройки
- Spring Data JPA — значительно упрощает создание репозиториев, добавляя готовые методы (
findBy...,save). - JOOQ — типобезопасный способ написания SQL-запросов через DSL на Java.
- R2DBC — реактивный драйвер для неблокирующего доступа к реляционным БД.
Выбор технологии зависит от:
- Сложности предметной области и запросов.
- Требований к производительности (тонкая настройка SQL vs быстрота разработки).
- Опыта команды и архитектуры приложения (монолит, микросервисы, реактивная).