2017-01-30 28 views
0

我正在研究一個項目,其中有很多隻讀操作(如選擇)與準備語句的幫助下編寫,但其他操作是與休眠事務。 我知道一個事務的原因是因爲如果你對數據庫進行了多重修改,那麼這是一種失敗的方式。所以如果失敗了,就會出現事務回滾。 但我不知道什麼是最好用於只讀操作:什麼時候應該使用準備好的語句通過休眠事務處理,反之亦然?JDBC準備語句與Hibernate會話事務只讀操作

回答

0

我不太確定我使用原始JDBC PreparedStatement只讀SELECT業務和委託冬眠完全同意其他。 Hibernate能夠支持原生SQL查詢和只讀操作。

通過原始JDBC使用Hibernate的最大原因之一是您可以參與使用開箱即用的第一級緩存支持。這對於只讀操作來說也很棒,因爲您可能會發出多個可能需要加載相同關係或實體的select-clause。

此外,您還可以參與引入第二級緩存提供程序。 Ehcache或Infinispan是優秀的緩存提供者,它允許Hibernate在本地存儲查詢緩存和實體緩存,從而實現更快的結果集處理。

除此之外,它還允許所有生成查詢的代碼更加一致。您總是與Hibernate進行交互,並選擇是否使用原始本機SQL。你甚至可以離開本地SQL,並且只使用HQL/JPQL,這樣應用程序就可以變得更少依賴數據庫,並且更加不可知。