Разница между функциями Hibernate createCriteria, createQuery, createSQLQuery
Может кто-нибудь скажет мне разницу между Hibernate's:
-
createCriteria
-
createQuery
-
createSQLQuery
Может ли кто-нибудь сказать мне, какие данные возвратят эти три функции, c.q. направить меня к правильной и простой ссылке для изучения этих функций гибернации?
Ответы
Ответ 1
Чтобы создать запрос в структуре ORM Hibernate, существует три разных типа. Ниже перечислены три способа создания экземпляра запроса:
-
session.createQuery()
-
session.createSQLQuery()
-
session.createCriteria()
Подробно ознакомьтесь с деталями каждой категории.
Session.createQuery()
Метод createQuery() создает объект Query с использованием синтаксиса HQL. Например:
Query query = session.createQuery("from Student s where s.name like 'k%'");
Session.createSQLQuery()
Метод createSQLQuery() создает объект Query с использованием собственного синтаксиса SQL. Например:
Query query = session.createSQLQuery("Select * from Student");
Session.createCriteria()
Метод createCriteria() создает объект Criteria для установки параметров запроса. Это более полезная функция для тех, кто не хочет писать запрос в руке. Вы можете указать любой тип сложного синтаксиса с помощью API критериев.
Criteria criteria = session.createCriteria(Student.class);
Ответ 2
1. session.createQuery()-> Can create query using HQL and can perform CRUD Operations
Пример:
Query query = session.createQuery("from Student");
List list=quey.list();
Query query = session.createQuery("update Student where studentid=9");
int result=query.executeUpdate();
Query query = session.createQuery("delete Student where studentid="+ studentId);
int result=query.executeUpdate();
Query query = session.createQuery("insert into Student where studentid="+ studentId);
int result=query.executeUpdate();
- session.createSQLQuery() → Может создавать запрос с использованием SQL и выполнять операции CRUD
- session.createCriteria() → Может создавать запрос с использованием API критериев и может выполнять только операции чтения
Ответ 3
------------------------
PERSON
------------------------
**DB_Column**| **POJO**
PERSON_ID | personID
------------------------
CreateQuery()
вы используете поля pojo. Использование синтаксиса HQL.
Query query = session.createQuery("from Person s where s.personID like 'A%'");
// returns:
List<Person> persons = query.list();
createSQLQuery()
Вы используете поля Native | DB.
После того, как вы поделились поиском на каком-либо сайте, вам известно, что это также очистит кеш, поскольку спящий режим не знает того, что вы выполнили.
Query query = session.createSQLQuery("select s.* from Person s where s.person_ID like 'A%'");
// returns:
List<Object[]> persons = query.list();.
createCriteria()
Ответ 4
createSQLQuery - для запросов на основе sql, который выбран вами с помощью jdbc-драйвера cfg или чего-то еще.
createQuery - для запросов на гибернацию, которые предоставляют вам независимый запрос, который заставляет вас запускать это во многих базах данных, используя API и другие преимущества.
createCriteria - лучше использовать для простого запроса на db из-за простоты.
Надеюсь, это поможет вам!