需要解释Hibernate标准吗

需要解释Hibernate标准吗,hibernate,criteria,Hibernate,Criteria,当我看到一篇ancriteria示例文章时,我对hibernate还不熟悉;它说: 您无法控制由Hibernate生成的SQL查询,如果生成的查询速度较慢,则很难对查询进行调优,并且您的数据库管理员可能不喜欢它 但是我觉得Criteria是用来生成生成SQL的where子句的,where子句只是一些条件一个接一个的添加,与查询的性能无关,那么如何理解上面的语句呢?首先了解Hibernate Criteria的用法。这用于从数据库获取数据,sql由Hibernate本身生成。有时,由于配置了急切获

当我看到一篇ancriteria示例文章时,我对hibernate还不熟悉;它说:

您无法控制由Hibernate生成的SQL查询,如果生成的查询速度较慢,则很难对查询进行调优,并且您的数据库管理员可能不喜欢它


但是我觉得Criteria是用来生成生成SQL的where子句的,where子句只是一些条件一个接一个的添加,与查询的性能无关,那么如何理解上面的语句呢?

首先了解Hibernate Criteria的用法。这用于从数据库获取数据,sql由Hibernate本身生成。有时,由于配置了急切获取,hibernate可能会不必要地生成包含大量列和联接的sql,这显然会影响性能。从这个意义上讲,如果您不能在HQL中实现,那么使用HQL甚至SQL都会更好(不应该如此)

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

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

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