2010-10-08 60 views
5

我們可以在不同的Java項目中同時指定多個JPA持久性單元指向同一個數據庫並在服務器上部署嗎?同時,我的意思是,沒有在同一時間部署,但部署在一起。我正在使用一個hsqldb數據庫。指向同一數據庫的多個JPA持久性單元?

我有我的項目的客戶端 - 服務器模型。我有一個統一的數據庫表,其中服務器填充數據,然後客戶端訪問不同項目中的數據。我可以通過服務器成功地填充數據庫。但是當我部署客戶端項目時,數據庫中的所有數據都將被擦除。

我對兩個持久性單元都使用<property name="hibernate.hbm2ddl.auto" value="update" />

回答

2

我們可以有多個JPA持久性單元指向同一個數據庫,在不同的Java項目中同時部署在服務器上嗎?

只要你沒有在兩個項目中不兼容的映射,這應該工作。儘管如此,您將無法使用二級緩存。

但是,當我部署客戶端項目時,數據庫中的所有數據都將被擦除。 (...)

這不是真正的行爲,我期望與hbm2ddl.auto設置爲update,但如果在「簇狀」環境中使用時的行爲被明確定義(與一些我不知道JVM在同一時間執行更新)。

當服務器部分完成初始化後部署客戶端時會發生什麼?

我的建議:

  • 安裝程序日誌記錄,看看發生了什麼正是
  • 如果您共享相同的實體,也許不update在客戶端和服務器上(雖然這不應該」如果一個接一個地完成,那麼問題就會成爲問題)。
  • 最後,don't use update at all on production database
+0

您的意思是隻部署客戶端並取消部署服務器? – 2010-10-08 06:56:14

+0

@Vashishtha不,我的意思是部署客戶端和服務器,但只有架構的更新完成。 – 2010-10-08 07:09:42

+0

@Pascal我正在做同樣的事情。但它不工作:( – 2010-10-08 18:35:29

相關問題