Ответ
ORM (Object-Relational Mapping) — это технология, которая автоматически связывает объекты приложения с записями в реляционной базе данных. JPA (Java Persistence API) — это стандартная спецификация ORM для Java.
Основные задачи ORM:
- Сопоставление: Автоматическое отображение полей класса на столбцы таблицы, а объектов — на строки.
- Управление жизненным циклом: Отслеживание состояния объектов (новый, управляемый, отсоединенный, удаленный).
- Запросы: Выполнение операций CRUD через объектно-ориентированный API (JPQL, Criteria API) вместо нативного SQL.
- Транзакции и кеширование: Обеспечение целостности данных и повышение производительности.
Пример сущности JPA (Entity):
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name", nullable = false, length = 50)
private String username;
// Конструкторы, геттеры, сеттеры
}
Популярные реализации JPA: Hibernate, EclipseLink, Apache OpenJPA.
Преимущества: Ускорение разработки, повышение переносимости кода между СУБД, безопасность (защита от SQL-инъекций). Недостатки/риски: Сложность тонкой оптимизации запросов, накладные расходы, необходимость понимания генерируемого SQL.