关于java:Hibernate Tools和不断变化的数据库

关于java:Hibernate Tools和不断变化的数据库

Hibernate Tools and the ever changing database

我目前正在使用Hibernate Tools 3.1; 我自定义了命名约定和DAO模板。 数据库(SQL Server 2005)处于早期开发阶段,我负责重建映射,实体,DAO,配置等。 每次我必须对表进行反向工程时,都会丢失对映射(* .hbm.xml文件)所做的所有自定义操作,例如调整标识列,选择equals和toString中使用的字段。 我当时正在考虑将diff XML写入文件中,然后将其"合并"到生成的映射中(请参阅我的相关问题),但我想知道……是否有最佳实践/工具来应对这些令人讨厌,不可避免,关键的问题 任务?


我强烈建议您不要进行持续的逆向工程。逆向工程是一件伟大的事情,但是需要将更改作为对hbm和数据库的更改进行管理。

我们使用迁移来管理数据库更改,并将相关的更改包括在hbm中。如果Hibernate拥有它(我相信确实如此),则您可能希望查看注释而不是hbm,它们可以更容易维护。


这是迟到了两年半的时间,但是我会提出不同意见。您应该能够通过hibernate.reveng.xml文件或自定义的ReverseEngineeringStrategy对映射文件进行所需的任何自定义。对于类本身,您应该始终生成基类,并使用包含自定义代码的类扩展它们。

例如,生成com.company.vo.genic.CustomerGenerated并使用com.company.vo.custom.Customer对其进行扩展。代码生成应该覆盖生成的包中的所有类,但不能覆盖自定义包中的所有类(尽管您可以让Hibernate Tools在目标目录中生成这些自定义类,以便您可以根据需要将空白复制并粘贴到自定义目录中)。这样,您可以覆盖自定义类中的equals,toString等方法,并且在重新生成时不会丢失更改。另请注意,最佳实践是不要将生成的代码签入SCM。

这个站点上有一些很棒的例子,说明如何使用Maven,Hibernate3插件和build helper插件来实现这一目标。其中大多数都有Pascal Thivent提供的非常有用的答案。这种方法对我来说效果很好,虽然有一些学习过程,但是能够通过单个Maven命令将数据库更改传播到应用程序是一件很棒的事情。


推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2

    6000元教你黑盒5000+权限配置

    6000元教你黑盒5000+权限配置,,一系列的价格后,最经典的AMD双核处理器mdash;mdash;Athlon 64 X2 5000 +黑版mdash;mdash;目前的价格已经低至565