首先,討論一下 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());
新聞熱點
疑難解答