2013-09-24 31 views
0

我是新來的休眠,當看一個ancriteria例子文章;它說:需要Hibernate標準的解釋

你沒有辦法控制由Hibernate生成的SQL查詢,如果生成的查詢速度很慢,你是很難調整的查詢和數據庫管理員可能不喜歡它。

但我認爲Criteria是用來生成where子句的生成SQL,而where子句只是一些條件增加一個而已,與查詢的性能無關,那麼如何理解上面的語句?

回答

0

首先了解Hibernate Criteria的用法。這用於從數據庫中獲取數據,而sql是由Hibernate本身生成的。有時候由於渴望獲取的配置,hibernate可能會不必要地生成sql,而且很多列和聯接會顯着影響性能。從這個意義上講,如果你不能在HQL中實現HQL(使用HQL),那麼使用HQL更好,甚至SQL。

0

Criteria只是一種以編程方式生成查詢的方式。它簡化了生成查詢的方式,而不是讓程序員通過連接字符串和謂詞來完成這項工作。如果您使用規範模型元數據,還會提供編譯時錯誤檢查,因此實際中實際存在引用的字段。

0

你不能做的一件事是強制使用索引,因爲沒有辦法將這種信息(強制索引)添加到生成的sql中。

另外,hibernate將加載所有選定表的所有列,這是一些DBA不喜歡的。