2014-10-08 62 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

相关问题