2

我使用Hibernate,Maven和Eclipse(STS构建)来构建项目。我正在使用hbm.xml文件来指定我的模式。我想用Hibernate的hbm2java来生成我的模型类。我已经运行良好并生成了我想要的代码。什么是使用Hibernate的hbm2java的最佳实践?

它从命令行完美运行,生成模型代码,然后按预期构建和测试。

但是,Eclipse似乎无法处理它。它会定期“失去理智”,无法解决我手动编码的DAO类中引用的非常简单的导入和类。它无法找到的东西是像HibernateUtil这样的类。具有讽刺意味的是,它似乎没有任何困难找到模型类。

未解决的类位于运行结束时的target/classes/blah-blah文件夹中。所以他们显然被复制到正确的地方。

在“持续集成”环境中,是否最好生成一次源代码,将它们提交给我的版本控制,然后禁用代码gen?或者是否有可能每次都生成代码,从而确保我能够在没有人为干预的情况下获取任何数据库更改?

回答

5

恕我直言,实体应该是您的应用程序的核心,并应小心设计,实施和记录。它们应该是对象,方法封装行为。让他们自动生成是一个荒谬的事,国际海事组织。

在开始生成它们可能是一个让你开始的选项,但是一旦生成它们,就可以手工制作它们并不再生成它们。在模式更改时添加必要的属性和方法,并重构现有代码。

顺便说一句,我真的更喜欢使用注释的映射,因为它不那么冗长,不易出错,所有的信息都在一个地方。

+0

谢谢。但我希望“真相之源”是我的数据库模式。通过手动编写模式类和模型类,我现在有多个知识存在的地方。您是否看到将数据库模式(或本例中为hbm.xml文件)定义为模型的唯一位置? (我想你可以在一个地方定义它:你的Java模型类) – Marvo 2011-12-31 00:25:30

+2

我们使用了注释,但发现它们完全相反:看起来很丑,遍布代码。使用hbm文件,感觉像数据库定义全部在一个地方。但我还没有解决这个问题。 (尽管我有问题,但我真的很感谢你的回答。) – Marvo 2011-12-31 00:27:02

+0

数据库模式位于数据库或用于创建模式的SQL脚本中,也位于hbm文件中,所以我不会看到它如何更改任何有关从hbm或手动生成的类的方法。如果您担心hbm和java文件未同步,请使用注释。无论如何你都应该进行单元测试来测试一切正常。 – 2011-12-31 00:30:33

0

试试这个:

从命令行运行到您的项目目录,该项目的pom.xml存在并运行:

mvn eclipse:clean eclipse:eclipse 

如果说无法找到插件日食然后尝试:

mvn eclipse:install-plugin 

首先再次尝试上面的命令。

通过这种方式,所有maven和项目依赖关系也将在eclipse级别解决。

让我知道如果这不是你要找的。

相关问题