Подтвердить что ты не робот

Разница между функциями Hibernate createCriteria, createQuery, createSQLQuery

Может кто-нибудь скажет мне разницу между Hibernate's:

  • createCriteria
  • createQuery
  • createSQLQuery

Может ли кто-нибудь сказать мне, какие данные возвратят эти три функции, c.q. направить меня к правильной и простой ссылке для изучения этих функций гибернации?

4b9b3361

Ответ 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();
  1. session.createSQLQuery() → Может создавать запрос с использованием SQL и выполнять операции CRUD
  2. 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()

  • Создайте SQL-запрос, используя объект Criteria для установки запроса параметры.
  • Полезно при переключении DB.
  • Только для чтения

    Criteria criteria = session.createCriteria(Person.class);
    criteria.add(Restrictions.like("personId", "A%"));
    List<Person> persons = criteria .list();
    

Ответ 4

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

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

createCriteria - лучше использовать для простого запроса на db из-за простоты.

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