Hibernate Annotations实战(二) - 编程入门网
Hibernate Annotations实战(二)时间:2011-07-28我在前面一篇文章<Hibernate Annotations 实战-- 从 hbm.xml 到 Annotations>中,有很多开发者在谈论中提到,有没有必要从 hbm.xml 往 Annotations 上转移. 那么在这篇文章中我们就来讨论一下 hbm.xml 与 Annotations的优缺点,看看那种情况最适合你. 首先,讨论一下 xml 配置文件的优点, 个人认为主要优点就是当你改变底层配置时 不需要改变和重新编译代码,只需要在xml 中更改就可以了,例如 Hibernate.cfg.xml 当你要更改底层数据库时, 只要更改配置文件就可以了.Hibernate会为你做好别的事情. 那么xml的缺点呢,个人认为有以下几点: 描述符多,不容易记忆,掌握 要深入了解还有看DTD文件 无法做自动校验,需要人工查找 读取和解析xml配置要消耗一定时间,导致应用启动慢,不便于测试和维护 当系统很大时,大量的xml文件难以管理 运行中保存xml配置需要消耗额外的内存 在O/R Mapping的时候需要在java文件和xml配置文件之间交替,增大了工作量 其中第一 二点 借助于先进的IDE 可能不是什么问题. 但是对初学者还是个问题 下面我们看看 Annotations的 特性吧! 可以解决xml遇到的问题,有以下优点 描述符减少。以前在xml配置中往往需要描述java属性的类型,关系等等。而元数据本身就是java语言,从而省略了大量的描述符 编译期校验。错误的批注在编译期间就会报错。 元数据批注在java代码中,避免了额外的文件维护工作 元数据被编译成java bytecode,消耗的内存少,读取也很快,利于测试和维护 关于映射文件是使用 hbm.xml 文件还是使用 Annotations 我们来看看2者的性能吧. 先声明一下,个人认为映射文件一旦配置好就不会在很大程度上改变了.所以使用xml文件并不会带来很大的好处.如果你认为 映射文件在你的项目中也经常变化,比如一列String数据 ,今天你使用 length="16" 明天你认为 该数据的长度应该更长才能满足业务需求 于是改为length="128" 等等类似的问题 . 如果你经常有这方面的变动的话,下面的比较你可以不用看了 , 你应该使用 xml文件 因为Annotations 无法很好的满足你的要求. 现在让我们就来看看2者的性能比较吧. (说明: 这里只是比较查找 插入 的时间快慢,没有比较除运行时间以外的其他性能,如 内存占用量 等等) 先来看看测试程序和配置. 首先在 Hibernate.cfg.xml 文件中去掉了 <property name="hibernate.hbm2ddl.auto">update</property> 这一行, 因为在前面的实验中以及建立了数据库表了 不再需要更新了.如果你是第一次运行该例子 还是要该行的. Hibernate Annotations实战(二)(2)时间:2011-07-28Test.java 如下: /* * Created on 2005 * @author */ package test.hibernate.annotation; import org.hibernate.Session; import org.hibernate.Transaction; public class Test { public static void main(String [] args) { long start = 0; long end = 0; start = System.currentTimeMillis(); //程序开始时间 Session s = HibernateUtil.currentSession(); long mid = System.currentTimeMillis(); //初始化完毕的时间 (可能此时并没有初始化完毕^_^) Transaction tx = s.beginTransaction(); /********************测试读取的代码************************/ Person p = null; for(int i = 1; i <= 100; i ++) { p = (Person) s.get(Person.class, i); System.out.println(p.getName()); } System.out.println(p.getName()); /********************测试读取1次的代码************************/ Pers |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |