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

时间:2011-12-26 14:55:33

标签: hibernate

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

  • createCriteria
  • createQuery
  • createSQLQuery

任何人都可以告诉我这三个函数返回的数据,c.q。指导我研究这些Hibernate函数的正确和简单的链接?

4 个答案:

答案 0 :(得分:36)

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

  1. session.createQuery()
  2. session.createSQLQuery()
  3. session.createCriteria()
  4. 详细了解每个类别的详细信息。

    Session.createQuery()
    

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

    Query query = session.createQuery("from Student s where s.name like 'k%'");
    

    Session.createSQLQuery()
    

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

    Query query = session.createSQLQuery("Select * from Student");
    

    Session.createCriteria()
    

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

    Criteria criteria = session.createCriteria(Student.class);
    

答案 1 :(得分:8)

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() - >可以使用Criteria API创建查询,只能执行读取操作

答案 2 :(得分:4)

------------------------
        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()

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

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

答案 3 :(得分:0)

createSQLQuery - 用于本机sql查询,由jdbc驱动程序cfg或其他人选择。

createQuery - 用于hibernate查询,它为您提供独立查询,使您可以使用API​​在许多数据库上运行该查询以及更多其他优势。

createCriteria - 最好用于简单查询数据库,因为它非常简单。

我希望这可以帮到你!