2011-08-25 33 views
0

我剛剛開始使用hibernate,因此如果這是一個愚蠢的問題,我很抱歉。如何打包方法以在包含所需表格的任何數據庫上工作

我想將我的一些代碼打包到不同應用程序可以使用的模塊中。 例如,處理髮送SMS消息的程序包。 該軟件包執行一些數據庫工作以獲取基本配置數據,然後可能會執行一些事務日誌記錄。 這將被添加到需要SMS功能的應用程序中。 因此,軟件包將要求調用應用程序包含軟件包所需的特定配置和日誌表。

我的問題是,爲了編寫獲取配置的hibernate方法並進行日誌記錄,需要知道hibernate特定的DOA對象。問題是這些對象僅在我們創建特定應用程序數據庫映射時纔會生成。

+0

我無法看到問題出在哪裏。你的實體只是類。您的DAO只是使用實體和標準JPA類和方法的類。將它們包裝在一個jar中,讓客戶端應用程序配置整個事物(DataSource,EntityManager等)。 –

回答

0

我們正處在一個類似的情況,所以在這裏我們做什麼:

  1. 所有實體都包含在我們的圖書館,因此DAO的有那些實體的足夠的知識。
  2. 如果應用程序在實體中需要更多的字段,它會將基本實體進行子類化,並對相應的DAO進行子類化(使用泛型進行參數化)。
  3. 該庫不包含任何persistence.xml,但我們的應用程序定義了一個,使用<jar-file>元素列出庫jar。請注意,爲此,所有的DAO必須使用相同的持久性單元,該單元在persistence.xml中定義。
  4. 應用程序必須提供庫中的表定義,但可以使用XML文件(在我們的例子中命名爲orm.xml)覆蓋這些表。該文件在我們的persistence.xml中定義。

當然,如果您不必使用特定於應用程序的代碼擴展庫,則可以降低複雜性。在這種情況下,您可以將persistence.xml放入lib中,使用不同的persitence單元等。

+0

謝謝。正是我想知道的和更多。我懷疑我需要擴展這個實體,但很好知道它可以完成。 – likenoother

0

您不需要生成您的DAO,您可以事先創建它們以及映射,並將它們與模塊一起打包。然後需要在每個站點創建所需的數據庫表,以便它們符合映射(或者實際上它們可以從映射中自動生成)。

+0

謝謝。欣賞快速而有用的迴應。 – likenoother

相關問題