Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate工具和不断变化的数据库_Java_Database_Hibernate_Hibernate Tools - Fatal编程技术网

Java Hibernate工具和不断变化的数据库

Java Hibernate工具和不断变化的数据库,java,database,hibernate,hibernate-tools,Java,Database,Hibernate,Hibernate Tools,我目前正在使用Hibernate工具3.1;我定制了命名约定和DAO模板。数据库(SQLServer2005)处于早期开发阶段,我负责重建映射、实体、DAO、配置等等。每次我都必须对表进行反向工程,因此我丢失了对映射(*.hbm.xml文件)所做的所有自定义,例如调整标识列,选择中使用的字段等于和toString。我曾考虑将diff-XML写入一个文件,并将其“合并”到生成的映射中(请参阅),但我想知道。。。有什么最佳实践/工具来处理这些烦人、不可避免的关键任务吗?我强烈建议不要继续进行逆向工程

我目前正在使用Hibernate工具3.1;我定制了命名约定和DAO模板。数据库(SQLServer2005)处于早期开发阶段,我负责重建映射、实体、DAO、配置等等。每次我都必须对表进行反向工程,因此我丢失了对映射(*.hbm.xml文件)所做的所有自定义,例如调整标识列,选择中使用的字段等于toString。我曾考虑将diff-XML写入一个文件,并将其“合并”到生成的映射中(请参阅),但我想知道。。。有什么最佳实践/工具来处理这些烦人、不可避免的关键任务吗?

我强烈建议不要继续进行逆向工程。逆向工程是一件很好的一次性工作,但是变更需要作为对hbm和数据库的变更进行管理


我们使用迁移来管理数据库更改,并将相关更改包括在hbm中。如果Hibernate有它(我相信它有),你可能想研究注释而不是hbm,它们可以更容易维护。

这已经晚了两年半,但我会提出不同的意见。您应该能够通过hibernate.reveng.xml文件或自定义反向工程策略对映射文件进行任何需要的自定义。对于类本身,您应该始终生成基类,并使用包含自定义代码的类对它们进行扩展

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


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

你——以及我最近的不幸经历——让我相信,RevEng最好是冷餐。非常感谢。