成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全面概括Hibernate Annotations

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

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

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

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

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

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

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

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

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

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

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

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

  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(); //測試結束時間  
  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. //打印 數據操作的時間  
  55. System.out.println("Total time : " +(end - start));   
  56. //打印總時間  
  57. }  
  58. }  

【編輯推薦】

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

2009-09-29 10:12:03

Hibernate A

2009-09-21 16:56:14

Hibernateibatis

2009-09-21 16:40:42

Hibernate可行

2009-09-28 15:24:38

Hibernate V

2009-09-24 09:25:10

Hibernate批量

2009-09-25 15:15:54

Hibernate檢索

2009-09-22 13:31:28

Hibernate C

2009-09-27 16:01:04

Hibernate A

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-16 16:55:07

LINQ to XML

2009-09-22 09:40:03

cascade和invHibernate

2009-09-22 13:12:25

Hibernateibatis

2009-09-25 13:18:15

Hibernate數據

2009-09-23 18:05:48

2009-09-24 13:45:53

Hibernate性能

2009-09-22 14:52:55

Hibernate p
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九av| 成人欧美一区二区三区黑人孕妇 | 成人欧美一区二区三区黑人孕妇 | 香蕉91| 日韩精品免费一区 | 色爱综合网| 老牛嫩草一区二区三区av | 久久久久久国产 | 精品一级 | 久久婷婷麻豆国产91天堂 | 免费一级欧美在线观看视频 | 国产精品中文字幕在线 | 亚洲欧美中文日韩在线 | 黄色免费在线观看网址 | 亚洲一区在线免费观看 | 一区二区三区亚洲 | 精品久久久久久亚洲精品 | 国产精品激情小视频 | 激情六月丁香婷婷 | 天天操一操 | 在线日韩av电影 | 在线视频日韩精品 | 欧美一级黄带 | 亚洲精品免费观看 | 日本91av视频 | 成人久久18免费网站 | 日韩在线不卡视频 | 视频一区二区中文字幕 | 欧美一级www片免费观看 | 蜜桃视频一区二区三区 | 国产成人免费视频网站高清观看视频 | 亚洲成av人影片在线观看 | 男女羞羞视频在线观看 | 国产视频福利一区 | 久久精品综合 | 久久久久亚洲 | 午夜精品福利视频 | 日韩欧美在线视频一区 | 国产一区91精品张津瑜 | 日韩欧美国产综合 | 香蕉二区 |