2013-01-07 44 views
1

在我看来,应该自动生成的代码一般/首选不能手动更改,因为我们不能再生任何东西。但一位经验丰富的休眠用户告诉我,他会一直更改hbm2java生成的代码以适应他的需求。 “适合需要”也很重要,所以我不确定这个主要的好处是什么。应该改变hibernate生成的代码以适应需求吗?

回答

3

应该自动生成的代码一般/首选不可用手改变?

- >不应该手工更改代码,因为如果您手动更改代码并且下次再次自动生成pojo类时。您可能需要做很多更改,并且难以保持手动更改。如果你错过了重大的改变,那么再次成为人类犯错误,那对你来说真的会非常困难。

但是一位经验丰富的hibernate用户告诉我,他会一直更改hbm2java生成的代码以适应他的需求。

- >您可以更改代码生成(复仇)脚本根据您的需要生成类,而不是在生成的代码中进行手动更改。

+1

如何用revenge.xml解决这个问题? http://www.mkyong.com/hibernate/hibernate-error-collection-has-neither-generic-type-or-onetomany-targetentity/ – user447586

1

我在这种情况下使用aspectJ,因为我也不喜欢改变生成的代码。它也有帮助,因为你无法通过再生代码破坏的东西...(记:它不会是你总是触发生成)

0

您最好通过Reveng-Templates间接更改代码!

  • 如果您重新生成源,您的自定义将丢失。

要更改模板提取的Hibernate工具来源pojo -folder你喜欢我下面的示例src/main/templates/pojo/Pojo.ftl的文件夹。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>hibernate3-maven-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
    <components> 
     <component> 
     <name>hbm2java</name> 
     <outputDirectory>src/main/java</outputDirectory> 
     </component> 
    </components> 
    <componentProperties> 
      <!-- to change the filename of the entitys to *Impl.java for examle --> 
     <reversestrategy>mypackage.MyStrategy</reversestrategy> 
     <revengfile>/src/main/config/hibernate.reveng.xml</revengfile> 
     <configurationfile>/src/main/config/hibernate.cfg.xml</configurationfile> 
      <!-- modify the templates to your needs --> 
     <templatepath>src/main/templates</templatepath> 
    </componentProperties> 
    </configuration> 
</plugin> 

非常欢迎改变模板(即使它们很难阅读)!通常不可或缺地结合长时间的会话。