在我看来,自动生成的代码一般/首选不应该手工更改,因为我们不能再生任何东西。但是一位经验丰富的hibernate用户告诉我,他总是会修改hbm2java生成的代码来满足他的需求。"适合需要"也很重要,所以我不确定这个主要的好是不是。
自动生成的代码一般/首选不应该手工更改吗?
->你不应该手工修改代码,因为如果你手工修改代码,下次你又会自动生成pojo类。您可能有很多更改要做,并且很难维护您的手动更改。再说一次,人是会犯错的,如果你错过了重大的改变,那么对你来说真的会很困难。
但是一个有经验的hibernate用户告诉我,他总是会修改hbm2java生成的代码来满足他的需要。
->您可以更改代码生成(复仇)脚本来根据您的需要生成类,而不是在生成的代码中进行手动更改。
我在这种情况下使用aspectJ,因为我也不喜欢更改生成的代码。它也有帮助,因为您不能通过重新生成代码来破坏某些东西……(注意:触发构建的并不总是你)
您最好通过复仇模板间接更改代码!
- 如果您重新生成源,您的自定义将丢失。
要更改模板,从Hibernate-Tools-sources中提取pojo
文件夹到下面示例中的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>
非常欢迎更改模板(即使它们很难阅读)!通常与长寿命的会话相结合是不可缺少的。