2010-09-17 44 views
2

我們將使用舊數據庫。 因此,在任何情況下(來自報告模塊),我們都不要修改數據庫/表/模式,因此非常重要,因此我想設置一些持久性上下文,並將一些持久性單元設置爲只讀模式(用於報告模塊),以及一些正常的JTA啓用。將持久化上下文設置爲只讀jpa

我們已經考慮過在這些持久性單元中創建兩個帳戶,一個將被授予只讀訪問權限,另一個將具有讀寫權限。

我想知道是否有更簡單的辦法可以用persistence.xml文件做,或者可以在JDBC驅動程序級別,以便我的連接到數據庫有選擇性地只讀和讀寫基於持久性單元處於活動狀態。或正在使用的數據庫驅動程序url ...我們正在使用SQL Server作爲數據庫服務器......如果這有助於任何一點。

回答

6

據我所知,在標準JPA中沒有對此的支持(超出了對數據庫連接使用權限限制的用戶)。但是,你的JPA提供者可能支持:

  • 只讀實體(例如與ElipseLink @ReadOnly或休眠@Immutable註釋)通過提示
  • 只讀查詢(用eclipselink.read-only設置爲true爲EclipseLink的或org.hibernate.readOnly設置爲true如爲休眠)。

我檢查了Microsoft JDBC驅動程序的connection properties,但沒有發現任何可能的幫助。

PS:EclipseLink有一個掛起的增強請求(Bug 282595)爲只讀EntityManager提供支持。你可能想爲它投票。