我正在研究一個項目,其中有很多隻讀操作(如選擇)與準備語句的幫助下編寫,但其他操作是與休眠事務。 我知道一個事務的原因是因爲如果你對數據庫進行了多重修改,那麼這是一種失敗的方式。所以如果失敗了,就會出現事務回滾。 但我不知道什麼是最好用於只讀操作:什麼時候應該使用準備好的語句通過休眠事務處理,反之亦然?JDBC準備語句與Hibernate會話事務只讀操作
0
A
回答
1
準備好的語句和事務有不同的範圍。
您應該使用預準備語句來防止SQL注入,並使您的代碼更具可讀性,安全性和可重用性。
您可以使用事務來控制事務性(提交和回滾),設置超時,隔離級別和鎖定模式。
當然,你應該在必要時使用兩者。
也許你覺得有用此鏈接:
Transactions for read-only DB access?
Advantages of using prepared statements over normal mysqli statements?
0
我不太確定我使用原始JDBC PreparedStatement
只讀SELECT
業務和委託冬眠完全同意其他。 Hibernate能夠支持原生SQL查詢和只讀操作。
通過原始JDBC使用Hibernate的最大原因之一是您可以參與使用開箱即用的第一級緩存支持。這對於只讀操作來說也很棒,因爲您可能會發出多個可能需要加載相同關係或實體的select-clause。
此外,您還可以參與引入第二級緩存提供程序。 Ehcache或Infinispan是優秀的緩存提供者,它允許Hibernate在本地存儲查詢緩存和實體緩存,從而實現更快的結果集處理。
除此之外,它還允許所有生成查詢的代碼更加一致。您總是與Hibernate進行交互,並選擇是否使用原始本機SQL。你甚至可以離開本地SQL,並且只使用HQL/JPQL,這樣應用程序就可以變得更少依賴數據庫,並且更加不可知。
相關問題
- 1. PHP準備語句綁定會話
- 2. PostgreSQL的準備語句操作員的
- 3. MySQLi準備好的語句和事務
- 4. 在事務中準備好的語句
- 5. Teradata的JDBC準備語句錯誤
- 6. JDBC Java準備語句執行錯誤
- 7. 查詢清單,準備語句(JDBC)
- 8. H2 JDBC準備語句異常
- 9. JDBC JAVAFX日期準備語句
- 10. JDBC - 在準備語句中使用sysdate會產生錯誤
- 11. 使用準備好的語句不起作用的PDO事務
- 12. 準備語句
- 13. JDBC準備好的語句/參考準備在另一個準備好的語句
- 14. 準備好的語句JDBC JAVA請求與PHP類似嗎?
- 15. 跨Hibernate會話和純jdbc單事務處理
- 16. Hibernate會話保存操作與底層數據庫事務同步嗎?
- 17. 值得從JDBC遷移到Hibernate ORM項目完成90%後的準備語句?
- 18. JDBC準備好的語句語法錯誤
- 19. PHP準備語句
- 20. 準備語句UPDATE
- 21. PDO準備語句
- 22. 準備語句行
- 23. PDO準備語句
- 24. 準備LIKE語句
- 25. PHP PDO不會準備語句NOW()
- 26. Redis中的事務與讀操作
- 27. PHP MySQL準備語句準備()失敗
- 28. 使用groovy.sql.Sql或JDBC在Grails中準備連接池和準備語句
- 29. PHP準備的語句沒有準備第二條語句
- 30. PHP在準備好的語句中準備了語句