Ответ
Опыт включает работу с различными типами СУБД и технологическими стеками для доступа к данным:
1. Реляционные СУБД (RDBMS):
- MySQL / PostgreSQL: Основные СУБД для production-приложений.
- H2 / SQLite: Для тестирования и встроенных решений.
2. NoSQL СУБД:
- MongoDB: Документо-ориентированная БД, работа через Mongo Java Driver или Spring Data MongoDB.
- Redis: Ключ-значение хранилище, часто как кэш или брокер сообщений.
3. Технологии доступа к данным в Java-экосистеме:
- JDBC (Java Database Connectivity): Низкоуровневый стандартный API для выполнения SQL-запросов.
- ORM (Object-Relational Mapping):
- Hibernate / JPA (Java Persistence API): Для маппинга объектов на таблицы, управления жизненным циклом сущностей, написания JPQL/HQL запросов.
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String email; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List<Order> orders = new ArrayList<>(); }
- Hibernate / JPA (Java Persistence API): Для маппинга объектов на таблицы, управления жизненным циклом сущностей, написания JPQL/HQL запросов.
- Spring Data JPA: Абстракция над JPA, значительно сокращающая boilerplate-код для репозиториев.
public interface UserRepository extends JpaRepository<User, Long> { // Автоматическая реализация по соглашению об именовании List<User> findByEmailContainingIgnoreCase(String emailPart); // Кастомный запрос на JPQL @Query("SELECT u FROM User u WHERE u.createdAt > :date") List<User> findRecentUsers(@Param("date") LocalDateTime date); } - JdbcTemplate (Spring): Упрощенная обертка над JDBC, убирающая рутинную работу с
Connection,Statement,ResultSet.
4. Сопутствующие компетенции:
- Проектирование схемы БД, нормализация.
- Написание и оптимизация SQL-запросов, использование
EXPLAIN. - Работа с транзакциями, понимание уровней изоляции (
READ_COMMITTED,REPEATABLE_READ). - Создание и использование индексов для повышения производительности.
- Миграции схемы БД (Flyway, Liquibase).