国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hibernate Annotations 實戰(二)

2019-11-18 12:58:02
字體:
來源:轉載
供稿:網友

在這篇文章中我們就來討論一下 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());



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 寿光市| 京山县| 文昌市| 甘南县| 光山县| 黄骅市| 五峰| 金秀| 彭阳县| 文昌市| 略阳县| 新龙县| 东辽县| 始兴县| 紫阳县| 广元市| 西和县| 四会市| 揭东县| 洱源县| 读书| 信阳市| 涟源市| 泰安市| 许昌市| 绍兴市| 永寿县| 大城县| 西乌珠穆沁旗| 湘潭县| 噶尔县| 孟连| 旬邑县| 察雅县| 克什克腾旗| 会昌县| 韩城市| 宁城县| 祁连县| 若羌县| 新邵县|