Разница между функциями Hibernate createCriteria, createQuery, createSQLQuery - PullRequest
27 голосов
/ 26 декабря 2011

Может кто-нибудь сказать мне, пожалуйста, разницу между Hibernate:

  • createCriteria
  • createQuery
  • createSQLQuery

Может кто-нибудь сказать мне, какие данные возвращают эти три функции, cq указывает мне правильную и простую ссылку для изучения этих функций Hibernate?

Ответы [ 4 ]

37 голосов
/ 26 декабря 2011

Для создания запроса в каркасе Hibernate ORM существует три разных типа. Ниже приведены три способа создания экземпляра запроса:

  1. session.createQuery()
  2. session.createSQLQuery()
  3. 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 для установки параметров запроса. Это более полезная функция для тех, кто не хочет писать запрос в руке. Вы можете указать любой тип сложного синтаксиса, используя Criteria API.

Criteria criteria = session.createCriteria(Student.class);
8 голосов
/ 20 января 2015
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 Criteria и может выполнять только операции чтения
4 голосов
/ 31 августа 2016
------------------------
        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.После поиска в Google какого-либо сайта, он узнал, что это также очистит кеш, так как в спящем режиме не знают, что вы выполнили.

Создание SQL-запроса с использованием объекта Criteria для настройки параметров запроса. Полезно при переключении БД.

Запрос только для чтения

Criteria criteria = session.createCriteria(Person.class);
criteria.add(Restrictions.like("personId", "A%"));
List<Person> persons = criteria .list();
0 голосов
/ 26 апреля 2016

createSQLQuery - для собственных запросов sql, которые вы выбираете с помощью драйвера jdbc cfg или чего-то еще.

createQuery - для запросов в режиме гибернации, которые обеспечивают независимые запросы, позволяющие запускать их во многих базах данных с использованием API и других преимуществ.

createCriteria - лучше использовать для простых запросов к БД из-за его простоты.

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...