【发布时间】:2013-04-10 20:48:33
【问题描述】:
如何从现有的 DB 模式生成 Hibernate hbm xml 文件和实体类?
【问题讨论】:
如何从现有的 DB 模式生成 Hibernate hbm xml 文件和实体类?
【问题讨论】:
我非常高兴地使用了 Hibernate 工具(在他们的网站上提供了示例)。 下面,我将详细介绍我的具体、高级和有趣(我认为)的用例。
实际上,我在我们的大项目(接近 800 个表,数据库驱动的团队)中遇到了一个有趣的挑战
但是大多数表并不是新的,我已经有了 java 实现和 .hbm.xml。 两者有时都是从最初生成它们的数据库中修改的,因此不可能在保证不破坏任何东西的情况下重新生成它们。 我需要迁移实体,尽可能少地改变(也就是说,只有注释)!
这也需要很快,因为我们典型的旧实体有大约 100 个成员(自己的 db 列,加上来自反向外键的实体集合!)。
注意:两个实体无法使用生成的完整构造函数进行编译,它们超出了 256 个参数的限制!但是我虽然这个Constructor反正没用,谁记得256个参数的顺序,所以我把它去掉了。
对于映射迁移,我使用了 Hibernate Tools(按需定制,模板和代码)如下:
信息的来源是 .hbm.xml 文件,以及 hibernate.cfg.xml 文件
注意:我必须先提取 hibernate.cfg.xml,替换用于包含列表的 spring bean。但这对于 Squirrel 等数据库工具也很有用,可以使用它来启用 HQL 补全……
生成的输出是仅包含字段、getter 和注释的 X2.java 文件(对于 X.java 类,在同一个包中) (没有设置器或构造器)(泛型集)
我会使用 Eclipse 编译器(错误“重复...”)来仔细检查我的编辑,以使其更快,更不容易出错(错误不是一种选择,我们有很多客户端在生产中!)。对于每个迁移的类,我会从生成的类复制到现有类:
出于好奇,本月我们接近 200 个带注释的实体 :-)。 典型的 100 个字段实体需要大约 30 分钟的工作才能迁移。 剩下 300 小时来完成剩下的 600 个实体的剪切粘贴! ;-)
【讨论】:
您应该为此使用休眠逆向工程工具。请参阅hibernate reverse engineering tools documentation 了解更多信息。
我不清楚如何生成 JPA 带注释的类,但如果这是一个新项目,您可能想考虑不再使用 hbm.xml 文件,支持注释。
【讨论】:
我会推荐Hibernate Tool
【讨论】:
Netbeans 具有生成配置文件、注释文件等功能
【讨论】: