在查看ancriteria示例文章时,我是hibernate的新手;它说:
你无法控制Hibernate生成的SQL查询,如果生成的查询很慢,你很难调整查询,而你的数据库管理员也可能不喜欢它。
但我认为Criteria用于生成生成的SQL的where子句,而where子句只是逐个添加的一些条件,与查询的性能无关,那么如何理解上述语句呢?
答案 0 :(得分:0)
首先要了解Hibernate Criteria的用法。这用于从数据库中获取数据,而sql是由Hibernate本身生成的。有时由于eager fetch的配置,hibernate可能会不必要地生成带有大量列和连接的sql,这显然会妨碍性能。从这个意义上说,如果你不能在HQL中实现(不应该是这种情况),使用HQL会更好甚至是SQL
答案 1 :(得分:0)
Criteria只是一种以编程方式生成查询的方法。它简化了生成查询的方式,而不是让程序员通过将字符串与谓词连接来完成该工作。如果使用规范模型元数据,还提供编译时错误检查,因此实体中实际存在引用的字段。
答案 2 :(得分:0)
您不能做的一件事是强制使用索引,因为无法将这种信息(强制索引)添加到生成的sql中。
此外,hibernate将加载所有选定表中的所有列,这是某些DBA不喜欢的。