技术开发 频道

浅谈Hibernate的学习经验



五、    Hibernate工具
关于生成Hibernate代码的工具种类繁多,例如Hibernate Tools、Hibernate Synchronizer、MyEclipse的Hibernate功能等等。而且,许多工具宣称支持双向工程代码(round-trip Engineering)自动生成,也即允许使用者在更新数据库模式之后,可以重新生成域对象代码,而不用覆盖任何已经添加的业务相关的代码。
但请不要过于信任这些工具。在处理较大的数据库模式或数据表时,用于一次性的代码生成,它们也许可以胜任。然而,这些工具往往不能生成我们真正需要代码,因此需要大量的修改。例如,双向生成器在修改代码时有很严格的要求,常常造成代码不必要的重大变动。
而且,当数据库模式不一样时,许多Hibernate工具表现得很奇怪。例如,使用Hibernate Tools为一张没有主键的数据表生成域对象时,它会错误的认为表中的所有字段均为主键,从而自然地生成一个复合的主键。
 
六、  Hibernate Annonations
在最近的Hibernate版本里,一个新的建立在Java 5 注解之上更为优雅的方法出现了。利用新的Hibernate Annonations ,读者可以发布一次如以前的映射文件所定义的信息,注解直接嵌入Java类文件里。注解带来了一种强大灵活地声明持久化映射的办法。最新版的几个Java集成开发环境里都很好的支持,并带有代码自动完成和语法高亮功能。,读者可以发布一次如以前的映射文件所定义的信息,注解直接嵌入Java类文件里。注解带来了一种强大灵活地声明持久化映射的办法。最新版的几个Java集成开发环境里都很好的支持,并带有代码自动完成和语法高亮功能。
Hibernate annotations 也支持最新的EJB 3持久化规范,这些规范目的是提供一个标准的Java持久化机制。当然Hibernate 3也提供了更多的解决方案,能非常容易的靠近并且利用EJB 3编程模型编写Hibernate持久化层。
尽管如此,在使用Annotations库之前,若干重要的因素需要给予足够的重视:
1.         Annotations库需要Java5的环境支持;
2.      在笔者写此文时,Annotations库只是预发版本(pre-release version)。也就是说,随着EJB3标准的最终发布,Annotations的最终版本也将发行。同时,从笔者的使用经验情况来看,此预发版本也还算稳定。
3.        学习Annotations库的过程曲折。这主要是因为关于它的文档尚不成熟。如果读者是初学Hibernate,则使用Annotations库将显得更加困惑。
4.       工具对它的支持稍显滞后(尽管Hibernate Tools可以成功的用于生成对域对象的注释)。
 
七、    Hibernate的部署
对于部署Hibernate时,从安装的Hibernate里选取所需的JAR文件是难以确定的。于是很多人在部署Hibernate时,将安装Hibernate里的JAR文件全部选取。这样做会引发如下的一些问题:
1.         延长从CVS上获取整个工程的时间。
2.        毫无必要的增加了部署文件的大小,例如EAR、WAR文件的大小。
3.        增加了操作系统设置classpath的复杂度。
4.        在开发环境下增加了不必要的文件,使开发人员眼花缭乱。
可行的方法之一是只添加所需的文件,在运行的时候查看程序是否中断。那么哪些文件是部署Hibernate所必需的文件呢?在Hibernate的安装文件包下有一个名为lib/_README.txt的文件,这里列出了Hibernate所有的JARS文件,同时说明了它们在什么情况将会被使用。笔者发现,此文件对于保持部署文件的大小是非常有帮助的。
0
相关文章