Ответ
JPA — это ORM-спецификация для объектно-реляционного отображения, а не инструмент для выполнения скриптов. Однако, с её помощью можно выполнять нативные SQL-запросы.
Способы выполнения SQL через JPA:
-
Нативные запросы (Native Queries) через
EntityManager:// Выборка (SELECT) Query query = em.createNativeQuery("SELECT * FROM users WHERE active = 1", User.class); List<User> users = query.getResultList(); // Модификация (UPDATE, DELETE) Query updateQuery = em.createNativeQuery("UPDATE config SET value = 'new' WHERE key = 'mode'"); int updatedCount = updateQuery.executeUpdate(); -
Аннотация
@NamedNativeQuery:@Entity @NamedNativeQuery( name = "User.findActive", query = "SELECT * FROM users WHERE active = 1", resultClass = User.class ) public class User { ... }
Ограничения и рекомендации:
- DDL-скрипты (CREATE, ALTER): JPA может выполнять их автоматически через свойство
hibernate.hbm2ddl.auto(например,create,update), но это не рекомендуется для production. Для инициализации данных можно использовать файлimport.sql. - Для скриптовых задач (миграции БД, сложные административные операции) лучше использовать специализированные инструменты:
- Flyway или Liquibase — для управления миграциями схемы БД.
- JDBC или командные утилиты СУБД (psql, mysql) — для одноразовых скриптов.