java - 我可以将 jaxb 与 hibernate hbm2ddl 一起使用吗?

标签 java xml hibernate jaxb xsd

我正在使用 jaxb 从 xsd 文件自动生成 java 类。我将需要保留将存储在将从类实例化的对象中的数据。 有没有什么方法可以在 JAXB 自动生成的相同类中自动生成 hibernate 代码?

我在开发过程中需要多次重新生成类。如果我必须手动编写 hibernate 代码,我能想到的唯一合理方法是使用 hibernate 编写单独的类以实现持久性,并编写连接器类将自动生成的类迁移到持久性类中。否则,每次我根据 xsd 文件的微调重新运行 jaxb 时,我手写的 hibernate 代码都会被覆盖。如果 hibernate 代码也自动生成,我最终可能会使用更少的类。

最佳答案

Hyperjaxb3是要走的路。它是一个包含在构建过​​程中的 JAXB 插件。当你通过xjc运行你的xsd文件时,你不仅会在生成的类上得到xml相关的注解,你还会得到JPA注解。几乎不需要编写任何代码,您就可以获取 XML 文档,将其保存到数据库中,从数据库中查询文档并取回 XML 文本。生成的代码可以在 xsd 文件或关联的绑定(bind)文件中自定义(就像 vanilla xjc)。我们还在生成的类上使用 hbm2ddl 来配置 hibernate 。

过去几年,我们一直在多个模式中积极使用它。

当您编辑 XML 架构/绑定(bind)(以及您的数据库架构)时,您将必须手动编写 SQL 迁移脚本来升级任何现有数据库。似乎大多数 DBMS 都有一个可以在这里使用的模式比较工具。我们会在每次构建时自动将新创建的模式与迁移的(从基线)模式进行比较。

关于java - 我可以将 jaxb 与 hibernate hbm2ddl 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261495/

相关文章:

python - 如何在Python中将很长的一行分成几行?

html - 从 json 或 xml 生成流程图 html

java - HQL 表达式中的 Null

java - 运行jetty而不使用maven 2插件打包项目

android - 滑动标签 - NullPointerException - Toolbar.getTitle()

java - 如何使用 Hibernate 从存储过程中检索输出参数

java - hibernate 事务 : Only Last item of list is saved into the table

java - 难道不能保证从列表派生的并行流总是表现得像它的顺序对应物一样,提供相同的、可预测的输出吗?

java - 从目录中检索 .class 文件列表

java - 如何分析来自 Java 核心转储的信息?