2014-01-07 89 views
3

是否可以使用Hibernate並使用只讀連接連接到數據庫?我將開發一個項目,該項目需要連接到現有的數據庫,從中提取數據,並在應用程序中執行一些複雜的數據操作。在所有這些我不能改變數據庫中的任何東西,因此只讀連接要求。只讀與休眠的數據庫連接

我的第一個想法是使用Hibernate從數據庫中提取數據,這樣我就可以讓現成的Java對象代表數據,但是,我似乎無法找到任何有關如何強制Hibernate使用讀取的信息只有數據庫連接......我有一種感覺,這可能實際上是不可能的,但我想在追求其他想法之前從其他人那裏找到它。

+1

如果你使用像spring這樣的框架,你可以設置事務是隻讀的 – gipinani

+0

我想你也可以設置數據源待定不過..但它依賴於驅動程序 – gipinani

回答

2
+0

感謝您的鏈接,但是,如果您閱讀整個章節(特別是表11.1),您會注意到即使會話已設置,Hibernate仍會寫入數據庫加載只讀的東西...我希望實現的是一種使Hibernate不會向數據庫寫入任何東西的100%確定方法。 –

+0

正確,但從我看到的那裏通常只有* -many關聯的問題。 「 休眠髒檢查單向一個一對多和多對多的許多聯想。 集合可以包含只讀未實體,以及實體只讀 實體可以是添加並從集合中刪除;更改刷新到數據庫 「 看來,你應該注意的不是添加(和刪除)實體集合,現有的實體也可以只讀 – janek

3

我沒有足夠的信譽發表評論,顯然:(

但爲了響應您對事件作出評論,其中休眠還可以寫回數據庫,你可以手工拆卸的對象從你的持久化上下文中,Hibernate將停止關注對象&的狀態是否被修改