Какие технологии для взаимодействия с базой данных вы использовали на предыдущем проекте?

«Какие технологии для взаимодействия с базой данных вы использовали на предыдущем проекте?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основными технологиями были JDBC для низкоуровневых операций и Hibernate в качестве ORM-фреймворка.

JDBC (Java Database Connectivity) использовался для прямых, оптимизированных запросов, особенно там, где требовался полный контроль над 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();
    // Обработка ResultSet
}
  • Почему JDBC: Для batch-операций, сложных отчетов или когда ORM генерирует неэффективный SQL.

Hibernate применялся для объектно-реляционного отображения (ORM) и работы со сложными доменными сущностями:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    // Геттеры и сеттеры
}
// Использование в DAO/сервисе
User user = session.get(User.class, userId);
  • Почему Hibernate: Для ускорения разработки, обеспечения декларативного управления транзакциями (@Transactional), кэширования и работы со связями между сущностями (one-to-many, many-to-many).

Дополнительно использовался Spring Data JPA для создания репозиториев по шаблону, что еще больше сокращало объем шаблонного кода.