Ответ
В последнем проекте в качестве основной реляционной базы данных использовалась PostgreSQL. Для взаимодействия с ней применялся стек Spring Data JPA поверх Hibernate.
Пример сущности и репозитория:
// Сущность (Entity)
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String email;
// Другие поля, связи (@OneToMany, @ManyToOne)
// Getters and Setters
}
// Репозиторий (Spring Data JPA)
public interface UserRepository extends JpaRepository<User, Long> {
// Декларативный метод для поиска
Optional<User> findByEmail(String email);
// Пример запроса с @Query (JPQL)
@Query("SELECT u FROM User u WHERE u.createdAt > :date")
List<User> findUsersCreatedAfter(@Param("date") LocalDateTime date);
}
Дополнительные инструменты и практики:
- Миграции схемы: Использовали Flyway для версионирования и применения изменений структуры БД (DDL).
- Сложные запросы: Для динамических или сложных запросов применяли QueryDSL или нативные SQL-запросы (
@Query(nativeQuery = true)). - Кэширование: Для повышения производительности часто запрашиваемых данных подключали Redis в качестве кэша второго уровня (L2 cache) или для хранения сессий.