Hibernate createCriteria,createQuery,createSQLQuery函数之间的区别

ano*_*oop 28 hibernate

任何人都可以告诉我Hibernate之间的区别:

  • createCriteria
  • createQuery
  • createSQLQuery

任何人都可以告诉我这三个函数返回什么数据,cq指导我一个正确而简单的链接来研究这些Hibernate函数?

Ram*_*tha 39

要在Hibernate ORM框架中创建查询,有三种不同的类型.以下是创建查询实例的三种方法:

  1. session.createQuery()
  2. session.createSQLQuery()
  3. session.createCriteria()

详细了解每个类别的详细信息.

Session.createQuery()
Run Code Online (Sandbox Code Playgroud)

createQuery()方法使用HQL语法创建Query对象.例如:

Query query = session.createQuery("from Student s where s.name like 'k%'");
Run Code Online (Sandbox Code Playgroud)
Session.createSQLQuery()
Run Code Online (Sandbox Code Playgroud)

createSQLQuery()方法使用本机SQL语法创建Query对象.例如:

Query query = session.createSQLQuery("Select * from Student");
Run Code Online (Sandbox Code Playgroud)
Session.createCriteria()
Run Code Online (Sandbox Code Playgroud)

createCriteria()方法创建Criteria对象以设置查询参数.对于那些不想编写查询的人来说,这是一个更有用的功能.您可以使用Criteria API指定任何类型的复杂语法.

Criteria criteria = session.createCriteria(Student.class);
Run Code Online (Sandbox Code Playgroud)


sub*_*his 8

1. session.createQuery()-> Can create query using HQL and can perform CRUD Operations 
Run Code Online (Sandbox Code Playgroud)

例:

      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();
Run Code Online (Sandbox Code Playgroud)
  1. session.createSQLQuery() - >可以使用SQL创建查询,并可以执行CRUD操作
  2. session.createCriteria() - >可以使用Criteria API创建查询,并且只能执行读操作


Rav*_*ekh 5

------------------------
        PERSON
------------------------
**DB_Column**| **POJO**
PERSON_ID    | personID
------------------------
Run Code Online (Sandbox Code Playgroud)

创建查询()

您正在使用 pojo 字段。使用 HQL 语法。

Query query = session.createQuery("from Person s where s.personID like 'A%'");

//    returns: 

List<Person> persons = query.list();
Run Code Online (Sandbox Code Playgroud)

创建SQL查询()

您正在使用 Native|DB 字段。在谷歌搜索一些网站后,我发现这也会清除缓存,因为休眠不知道你执行了什么。

Query query = session.createSQLQuery("select s.* from Person s where s.person_ID like 'A%'");

//    returns: 

List<Object[]> persons = query.list();.
Run Code Online (Sandbox Code Playgroud)

创建条件()

  • 使用 Criteria 对象创建 sql 查询来设置查询参数。
  • 切换数据库时很有用。
  • 只读查询

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