网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.一个用JAVA写的测算服务器响应速.
.Java 繁体中文处理完全攻略(二).
.会话跟踪Servlet程序方法和实例.
.Java异常处理之陋习展播.
.初学者入门:Structs中基本配置入.
.struts构建文件上传(六).
.Servlet 容器的工作原理 ( 三 ).
.转-类的深入研究.
.Mini Java编译器(五).
.快速了解 Java Web Services Dev.
.Java Swing 组件全演示.
.xmlhttp和Java session监听改善消.
.JINI的阿拉丁神灯能亮多久?.
.用Jython构建JUnit测试包.
.如何用java来计算对数.
.Mini Java编译器(二)——语法(.
.用FileFilter搜索文件.
.StringBuffer帮你减轻Java的负担.
.使Java代码可移植之二.
.Java的字符串操作.

HibernateAnnotations实战(二)

发表日期:2008-1-5



  在这篇文章中我们就来讨论一下 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>


这一行, 因为在前面的实验中以及建立了数据库表了 不再需要更新了.假如你是第一次运行该例子 还是要该行的.


Test.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());



上一篇:java设计模式之Composite(组合) 人气:979
下一篇:用One-JAR简化应用程序交付 人气:696
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐