首先,讨论一下 xml 配置文件的优点, 个人认为主要优点就是当你改变底层配置时 不需要改变和重新编译代码,只需要在xml 中更改就可以了,例如 Hibernate.cfg.xml 当你要更改底层数据库时, 只要更改配置文件就可以了.Hibernate会为你做好别的事情.
那么xml的缺点呢,个人认为有以下几点:
其中第一 二点 借助于先进的IDE 可能不是什么问题. 但是对初学者还是个问题
下面我们看看 Annotations的 特性吧! 可以解决xml碰到的问题,有以下优点
关于映射文件是使用 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());
新闻热点
疑难解答