Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate createCriteria、createQuery和createSQLQuery函数之间的差异_Hibernate - Fatal编程技术网

Hibernate createCriteria、createQuery和createSQLQuery函数之间的差异

Hibernate createCriteria、createQuery和createSQLQuery函数之间的差异,hibernate,Hibernate,有人能告诉我Hibernate和Hibernate的区别吗 创建标准 createQuery createSQLQuery 有谁能告诉我这三个函数返回了什么数据吗,c.q.请给我一个适当而简单的链接来研究这些Hibernate函数?要在Hibernate ORM框架中创建查询,有三种不同的类型。以下是创建查询实例的三种方法: session.createQuery session.createSQLQuery session.createCriteria 详细查看每个类别的详细信息 Sessio

有人能告诉我Hibernate和Hibernate的区别吗

创建标准 createQuery createSQLQuery
有谁能告诉我这三个函数返回了什么数据吗,c.q.请给我一个适当而简单的链接来研究这些Hibernate函数?

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

session.createQuery session.createSQLQuery session.createCriteria 详细查看每个类别的详细信息

Session.createQuery()
createQuery方法使用HQL语法创建查询对象。例如:

Query query = session.createQuery("from Student s where s.name like 'k%'");
Query query = session.createSQLQuery("Select * from Student");
createSQLQuery方法使用本机SQL语法创建查询对象。例如:

Query query = session.createQuery("from Student s where s.name like 'k%'");
Query query = session.createSQLQuery("Select * from Student");
createCriteria方法创建用于设置查询参数的Criteria对象。对于那些不想亲自编写查询的人来说,这是一个更有用的特性。可以使用CriteriaAPI指定任何类型的复杂语法

Criteria criteria = session.createCriteria(Student.class);
例如:

      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();
createSQLQuery->可以使用SQL创建查询,并可以执行CRUD操作 session.createCriteria->可以使用Criteria API创建查询,并且只能执行读取操作 createSQLQuery-用于本机sql查询,由您使用jdbc驱动程序cfg或其他选择

createQuery-用于hibernate查询,它为您提供独立的查询,使您能够使用API在许多数据库上运行该查询,并具有其他更多优点

createCriteria-由于其简单性,最好用于数据库上的简单查询

我希望这对你有帮助

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

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

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

//    returns: 

List<Object[]> persons = query.list();.
创建标准

使用用于设置查询的Criteria对象创建sql查询 参数。 在切换数据库时非常有用。 只读查询

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

用谷歌搜索Hibernate文档怎么样?你们有更简单易懂的教程吗。我不太擅长java和hibernate。你在谷歌上搜索过hibernate文档吗?你读过核心参考手册吗?我没有读核心参考手册。它在哪里?你有链接吗?哦,别这样。谷歌的Hibernate文档。单击第一个结果。查看页面中表格的第二个单元格。它是由Hibernate核心参考手册编写的。那么session.createQuery和session.createSQLQuery之间的区别是什么?请详细描述你的回答,哪一个更有用,或者在什么情况下使用它们?这很好。这有帮助。
Criteria criteria = session.createCriteria(Person.class);
criteria.add(Restrictions.like("personId", "A%"));
List<Person> persons = criteria .list();