需要解释Hibernate标准

时间:2013-09-24 15:22:36

标签: hibernate criteria

在查看ancriteria示例文章时,我是hibernate的新手;它说:

  

你无法控制Hibernate生成的SQL查询,如果生成的查询很慢,你很难调整查询,而你的数据库管理员也可能不喜欢它。

但我认为Criteria用于生成生成的SQL的where子句,而where子句只是逐个添加的一些条件,与查询的性能无关,那么如何理解上述语句呢?

3 个答案:

答案 0 :(得分:0)

首先要了解Hibernate Criteria的用法。这用于从数据库中获取数据,而sql是由Hibernate本身生成的。有时由于eager fetch的配置,hibernate可能会不必要地生成带有大量列和连接的sql,这显然会妨碍性能。从这个意义上说,如果你不能在HQL中实现(不应该是这种情况),使用HQL会更好甚至是SQL

答案 1 :(得分:0)

Criteria只是一种以编程方式生成查询的方法。它简化了生成查询的方式,而不是让程序员通过将字符串与谓词连接来完成该工作。如果使用规范模型元数据,还提供编译时错误检查,因此实体中实际存在引用的字段。

答案 2 :(得分:0)

您不能做的一件事是强制使用索引,因为无法将这种信息(强制索引)添加到生成的sql中。

此外,hibernate将加载所有选定表中的所有列,这是某些DBA不喜欢的。