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