2010-05-27 147 views
3

我們正在開始使用JPA的項目編碼階段。我們使用Netbeans中的工具根據模式生成我們的JPA實體。它工作得很好,但從那以後,我們一直不得不自定義實體。維護JPA實體

我們爲我們的模式做了一個體面的大小改變(添加了一個表格,並且互換了其他關係),並且因此需要更新我們的實體。我們無法重新生成它們,因爲我們必須去重新應用我們所有的定製,所以我們手工完成了所有的定製。沒什麼大不了的,只是我預計會花費更多時間。

定製是我們添加的命名查詢,級聯類型,我們自己的String方法,equals和散列碼方法。我想過創建擴展實體以添加toString,equals和hascode方法的類,這樣如果我們重新生成它們,它們就不會丟失。但我不確定Cascade類型和命名查詢。

有沒有更好的方法,還是這只是一廂情願?

回答

1

我相信這只是一廂情願的想法。生成實體並擴展它們只會給你帶來一系列不同的問題。您生成的實體必須註釋爲@MappedSuperclass,並且不會有表名 - 再加上您的擴展可能需要重複一些註釋,此外,您有時必須調整您的名稱查詢自定義。只是一個麻煩。

一般來說,從數據庫模式生成實體是一次性事情,要永久維護。

但是,從實體生成數據庫模式可能需要較長時間。但是,即便如此,您仍然必須謹慎地管理模式遷移的問題。

底線 - 同步持久實體和數據庫模式需要仔細的手動工作。

+0

感謝您的回答。這幾乎是我曾想過的。我想我只是希望自己做錯了事,或者不以正確的方式思考,並且必須有更好的方式。 – 2010-07-09 02:54:05

+0

更多可能有用的信息可以在這裏找到:http://stackoverflow.com/questions/2052781/support-for-schema-migrations-with-jpa – HDave 2010-07-09 04:36:59