- Метод createQuery используется для создания динамических запросов, которые являются запросами, определенными непосредственно в бизнес-логике приложения. Пример:
public List findWithName(String name) {
return em.createQuery(
"SELECT c FROM Customer c WHERE c.name LIKE :custName")
.setParameter("custName", name)
.setMaxResults(10)
.getResultList();
}
- Метод createNamedQuery используется для создания статических запросов или запросов, определенных в метаданных, с помощью аннотации javax.persistence.NamedQuery. Элемент name @NamedQuery указывает имя запроса, который будет использоваться с методом createNamedQuery. Элемент запроса @NamedQuery - это запрос:
@NamedQuery(
name="findAllCustomersWithName",
query="SELECT c FROM Customer c WHERE c.name LIKE :custName"
)
Вот пример createNamedQuery, который использует @NamedQuery:
@PersistenceContext
public EntityManager em;
...
customers = em.createNamedQuery("findAllCustomersWithName")
.setParameter("custName", "Smith")
.getResultList();
- createNativeQuery Создайте экземпляр Query для выполнения собственного оператора SQL. вот несколько причин выбора createNativeQuery: доступ на низком уровне, что означает, что вы можете оптимизировать и обрабатывать отображение самостоятельно; с SQL вы фактически получаете доступ к таблице базы данных, а с JPQL - к объектам сущности; Возможно, вы не хотите изучать JPQL, если уже знаете SQL. У вас уже есть запросы, написанные на SQL, и у вас нет ресурсов / времени для их переноса на JPQL
. Для получения более подробной информации посетите те Ссылки:
Создание запросов с использованием языка запросов на сохранение Java
JPA зачем использовать createNamedQuery
Почему нам нужно создать собственный запрос?
задан danko12 15 January 2019 в 21:18
поделиться