2014-10-08 63 views
1

我正在使用jaxb從xsd文件自動生成java類。我將需要保存將存儲在將從類實例化的對象中的數據。 是否有某種方法可以在由JAXB自動生成的相同類中自動生成hibernate代碼?我可以使用jaxb與hibernate hbm2ddl嗎?

我需要在開發過程中多次重新生成類。如果我必須手工編寫hibernate代碼,我可以想象的唯一合理的方法是使用hibernate編寫單獨的類來進行持久化,並編寫將自動生成的類遷移到持久性類中的連接器類。否則,我每次重新運行基於xsd文件微調的jaxb時,手寫hibernate代碼都會被覆蓋。如果hibernate代碼也是自動生成的,我最終可能會使用更少的類。

回答

1

Hyperjaxb3是要走的路。它是構建過程中包含的JAXB插件。當你通過xjc運行你的xsd文件時,你不但會在生成的類上得到與xml相關的註釋,還會得到JPA註解。在不編寫任何代碼的情況下,您將能夠獲取XML文檔,將其保存到數據庫中,從數據庫查詢文檔並返回XML文本。生成的代碼可以在xsd文件或關聯的綁定文件中自定義(就像使用vanilla xjc一樣)。我們還在生成的類上使用hbm2ddl來配置hibernate。

在過去的幾年中,我們一直在積極使用這種模式。

當您編輯XML架構/綁定(以及您的數據庫架構)時,您將不得不手動編寫SQL遷移腳本來升級任何現有的數據庫。似乎大多數DBMS都有一個可以在這裏使用的模式比較工具。我們會自動將新創建的模式與每個構建中遷移的(從基線)模式進行比較。

+0

順便說一句,我將項目移到GitHub上:https://github.com/highsource/hyperjaxb3 – lexicore 2014-10-08 20:18:09

+0

@CodeMed lexicore是幫助你的人(他是hyperjaxb3的作者)。如果可以的話,我會幫忙的。 – Rob 2014-10-09 02:56:26

+0

@Rob非常感謝你給予的幫助。我遇到了將教程應用程序放入新的eclipse項目中的一些問題。我採納了你的建議,並逐步記錄了我正在做的事情,試圖在另一篇文章中將它帶入日食。你是否願意看看另一篇文章?這裏是鏈接:http://stackoverflow.com/questions/26286055/importing-hyperjaxb-purchase-order-tutorial-into-eclipse – CodeMed 2014-10-09 20:50:38

相關問題