自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面概括Hibernate Annotations

開發(fā) 后端
這里介紹關(guān)于映射文件是使用 hbm.xml 文件還是使用 Hibernate Annotations 我們來看看2者的性能吧. 先聲明一下,個人認為映射文件一旦配置好就不會在很大程度上改變了.

本文向大家介紹Hibernate Annotations,可能好多人還不了解Hibernate Annotations,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

在這篇文章中我們就來討論一下 hbm.xml 與 Hibernate Annotations的優(yōu)缺點,看看那種情況最適合你.

首先,討論一下 xml 配置文件的優(yōu)點,個人認為主要優(yōu)點就是當你改變底層配置時 不需要改變和重新編譯代碼,只需要在xml 中更改就可以了,例如 Hibernate.cfg.xml 當你要更改底層數(shù)據(jù)庫時,只要更改配置文件就可以了.Hibernate會為你做好別的事情.

那么xml的缺點呢,個人認為有以下幾點:
◆描述符多,不容易記憶,掌握 要深入了解還有看DTD文件
◆無法做自動校驗,需要人工查找
◆讀取和解析xml配置要消耗一定時間,導致應(yīng)用啟動慢,不便于測試和維護
◆當系統(tǒng)很大時,大量的xml文件難以管理
◆運行中保存xml配置需要消耗額外的內(nèi)存
◆在O/R Mapping的時候需要在java文件和xml配置文件之間交替,增大了工作量

其中第一 二點 借助于先進的IDE 可能不是什么問題. 但是對初學者還是個問題

下面我們看看 Hibernate Annotations的特性吧! 可以解決xml遇到的問題,有以下優(yōu)點
◆描述符減少。以前在xml配置中往往需要描述java屬性的類型,關(guān)系等等。而元數(shù)據(jù)本身就是java語言,從而省略了大量的描述符
◆編譯期校驗。錯誤的批注在編譯期間就會報錯。
◆元數(shù)據(jù)批注在java代碼中,避免了額外的文件維護工作
◆元數(shù)據(jù)被編譯成java bytecode,消耗的內(nèi)存少,讀取也很快,利于測試和維護

關(guān)于映射文件是使用 hbm.xml 文件還是使用 Hibernate Annotations 我們來看看2者的性能吧. 先聲明一下,個人認為映射文件一旦配置好就不會在很大程度上改變了.所以使用xml文件并不會帶來很大的好處.如果你認為映射文件在你的項目中也經(jīng)常變化,比如一列String數(shù)據(jù),今天你使用 length="16" 明天你認為該數(shù)據(jù)的長度應(yīng)該更長才能滿足業(yè)務(wù)需求 于是改為length="128" 等等類似的問題 . 如果你經(jīng)常有這方面的變動的話,下面的比較你可以不用看了,你應(yīng)該使用 xml文件 因為Hibernate Annotations 無法很好的滿足你的要求.

現(xiàn)在讓我們就來看看2者的性能比較吧.(說明: 這里只是比較查找 插入 的時間快慢,沒有比較除運行時間以外的其他性能,如 內(nèi)存占用量 等等)

先來看看測試程序和配置.首先在 Hibernate.cfg.xml 文件中去掉了

  1. <property name="hibernate.hbm2ddl.auto">update</property> 

這一行, 因為在前面的實驗中以及建立了數(shù)據(jù)庫表了 不再需要更新了.如果你是第一次運行該例子 還是要該行的.

  1. /*  
  2.  * Created on 2005  
  3.  * @author   
  4.  */  
  5. package test.hibernate.annotation;  
  6.  
  7. import org.hibernate.Session;  
  8. import org.hibernate.Transaction;  
  9.  
  10. public class Test {  
  11.  
  12. public static void main(String [] args) {  
  13. long start = 0;  
  14. long end = 0;  
  15. start = System.currentTimeMillis();//程序開始時間  
  16.  
  17. Session s = HibernateUtil.currentSession();  
  18. long mid =System.currentTimeMillis();  
  19. //初始化完畢的時間  
  20.  
  21. Transaction tx = s.beginTransaction();  
  22. //測試讀取的代碼  
  23. Person p = null;  
  24. for(int i = 1; i <= 100; i ++) {  
  25. p = (Person) s.get(Person.class, i);  
  26. System.out.println(p.getName());  
  27. }  
  28. System.out.println(p.getName());  
  29.  
  30. //測試讀取1次的代碼  
  31. Person p = null;  
  32. p = (Person) s.get(Person.class, 1);  
  33. System.out.println(p.getName());  
  34. //測試插入的代碼  
  35. /*  
  36. for (int i = 0; i < 100; i ++) {  
  37. Person p = new Person();  
  38. p.setAge(i+1);  
  39. p.setName("icerain"+i);  
  40. p.setSex("male"+i);  
  41. s.save(p);  
  42. s.flush();  
  43. }  
  44. */  
  45. tx.commit();  
  46. HibernateUtil.closeSession();  
  47.  
  48. end = System.currentTimeMillis(); //測試結(jié)束時間  
  49. System.out.println("String[] - start time: " + start);  
  50. System.out.println("String[] - end time: " + end);  
  51. System.out.println("Init time : " + (mid-start));   
  52. // 打印初始化用的時間  
  53. System.out.println("Last time is :" +(end - mid) );   
  54. //打印 數(shù)據(jù)操作的時間  
  55. System.out.println("Total time : " +(end - start));   
  56. //打印總時間  
  57. }  
  58. }  

【編輯推薦】

  1. Hibernate對數(shù)據(jù)索引進行緩存
  2. 剖析Hibernate主鍵生成幾種常用方式
  3. 淺析Hibernate實現(xiàn)實體對象延遲加載
  4. Hibernate集合類型的延遲加載特性
  5. 概括Hibernate屬性延遲加載
責任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2009-09-29 10:12:03

Hibernate A

2009-09-21 16:56:14

Hibernateibatis

2009-09-21 16:40:42

Hibernate可行

2009-09-27 16:01:04

Hibernate A

2009-09-25 15:15:54

Hibernate檢索

2009-09-24 09:25:10

Hibernate批量

2009-09-22 13:31:28

Hibernate C

2009-09-28 15:24:38

Hibernate V

2009-09-22 17:55:51

Spring Hibe

2009-09-29 16:29:40

Hibernate查詢

2009-09-22 09:31:15

Hibernate主鍵

2009-09-27 14:33:01

Hibernate批量

2009-09-28 09:56:53

Hibernate屬性

2009-09-22 09:40:03

cascade和invHibernate

2009-09-25 13:18:15

Hibernate數(shù)據(jù)

2009-09-22 13:12:25

Hibernateibatis

2009-09-23 18:05:48

2009-09-16 16:55:07

LINQ to XML

2009-09-22 14:52:55

Hibernate p

2009-09-23 13:21:32

Hibernate O
點贊
收藏

51CTO技術(shù)棧公眾號