Ответ
Работал с реляционными (SQL) и нереляционными (NoSQL) базами данных, используя как низкоуровневые драйверы, так и ORM-фреймворки.
1. Реляционные СУБД (MySQL, PostgreSQL, Oracle):
- JDBC: Низкоуровневый API для выполнения SQL.
String sql = "UPDATE users SET name = ? WHERE id = ?"; try (PreparedStatement stmt = connection.prepareStatement(sql)) { stmt.setString(1, "Alice"); stmt.setInt(2, 101); int rowsUpdated = stmt.executeUpdate(); // Важно: используем PreparedStatement для безопасности } - JPA / Hibernate: ORM для маппинга объектов на таблицы.
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // Геттеры и сеттеры } // Запрос через EntityManager List<User> users = em.createQuery("SELECT u FROM User u", User.class).getResultList();
2. NoSQL СУБД:
- MongoDB (документная): Работа через Spring Data MongoDB или нативный драйвер.
- Redis (ключ-значение): Использовал как кэш и брокер сообщений (через Spring Data Redis,
RedisTemplate).
Ключевые практики:
- Использование пулов соединений (HikariCP) для производительности.
- Транзакционность (
@Transactional) для обеспечения целостности данных. - Оптимизация запросов: анализ
EXPLAIN, создание индексов, избегание N+1 проблемы в Hibernate. - Миграции схемы с помощью Flyway или Liquibase.