精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

hibernate2和3不同之處大全

開發 后端
Hibernate 3.0 與Hibernate2.1的源代碼是不兼容的,但是當Hibernate開發小組在設計Hibernate3.0時,為簡化升級Hibernate版本作了周到的考慮。

盡管Hibernate 3.0 與Hibernate2.1的源代碼是不兼容的,但是當Hibernate開發小組在設計Hibernate3.0時,為簡化升級Hibernate版本作了周到的考慮。對于現有的基于Hibernate2.1的Java項目,可以很方便的把它升級到Hibernate3.0。
本文描述了Hibernate3.0版本的新變化,Hibernate3.0版本的變化包括三個方面:

(1)API的變化,它將影響到Java程序代碼。
(2)元數據,它將影響到對象-關系映射文件。
(3)HQL查詢語句。

值得注意的是, Hibernate3.0并不會完全取代Hibernate2.1。在同一個應用程序中,允許Hibernate3.0和Hibernate2.1并存。

1.Hibernate API 變化

1 )包名

Hibernate3.0的包的根路徑為: “org.hibernate” ,而在Hibernate2.1中為“net.sf.hibernate”。這一命名變化使得Hibernate2.1和Hibernate3.0能夠同時在同一個應用程序中運行。

如果希望把已有的應用升級到Hibernate3.0,那么升級的第一步是把Java源程序中的所有“net.sf.hibernate”替換為“org.hibernate”。

Hibernate2.1 中的“net.sf.hibernate.expression”包被改名為“org.hibernate.criterion”。假如應用程序使用了 Criteria API,那么在升級的過程中,必須把Java源程序中的所有“net.sf.hibernate.expression”替換為 “org.hibernate.criterion”。

如果應用使用了除Hibernate以外的其他外部軟件,而這個外部軟件又引用了Hibernate的接口,那么在升級時必須十分小心。例如EHCache擁有自己的CacheProvider: net.sf.ehcache.hibernate.Provider,在這個類中引用了Hibernate2.1中的接口,在升級應用時,可以采用以下辦法之一來升級EHCache:

(1)手工修改net.sf.ehcache.hibernate.Provider類,使它引用Hibernate3.0中的接口。
(2)等到EHCache軟件本身升級為使用Hibernate3.0后,使用新的EHCache軟件。
(3)使用Hibernate3.0中內置的CacheProvider:org.hibernate.cache.EhCacheProvider。

2) org.hibernate.classic包

Hibernate3.0把一些被廢棄的接口都轉移到org.hibernate.classic中。

3)Hibernate所依賴的第三方軟件包

在Hibernate3.0的軟件包的lib目錄下的README.txt文件中,描述了Hibernate3.0所依賴的第三方軟件包的變化。

4)異常模型

在Hibernate3.0中,HibernateException異常以及它的所有子類都繼承了java.lang.RuntimeException。因此在編譯時,編譯器不會再檢查HibernateException。

5)Session接口

在Hibernate3.0中,原來Hibernate2.1的Session接口中的有些基本方法也被廢棄,但為了簡化升級,這些方法依然是可用的,可以通過org.hibernate.classic.Session子接口來訪問它們,例如:
org.hibernate.classic.Session session=sessionFactory.openSession();
session.delete("delete from Customer ");
在Hibernate3.0 中,org.hibernate.classic.Session接口繼承了org.hibernate.Session接口,在 org.hibernate.classic.Session接口中包含了一系列被廢棄的方法,如find()、interate()等。 SessionFactory接口的openSession()方法返回org.hibernate.classic.Session類型的實例。如果希望在程序中完全使用Hibernate3.0,可以采用以下方式創建Session實例:

org.hibernate.Session session=sessionFactory.openSession();

如果是對已有的程序進行簡單的升級,并且希望仍然調用Hibernate2.1中Session的一些接口,可以采用以下方式創建Session實例:

org.hibernate.classic.Session session=sessionFactory.openSession();

在Hibernate3.0中,Session接口中被廢棄的方法包括:

◆執行查詢的方法:find()、iterate()、filter()和delete(String hqlSelectQuery)
◆saveOrUpdateCopy()

Hibernate3.0一律采用createQuery()方法來執行所有的查詢語句,采用DELETE 查詢語句來執行批量刪除,采用merge()方法來替代 saveOrUpdateCopy()方法。

提示:

在Hibernate2.1中,Session的delete()方法有幾種重載形式,其中參數為HQL查詢語句的delete()方法在 Hibernate3.0中被廢棄,而參數為Ojbect類型的的delete()方法依然被支持。delete(Object o)方法用于刪除參數指定的對象,該方法支持級聯刪除。

Hibernate2.1沒有對批量更新和批量刪除提供很好的支持,參見< <精通Hibernate>>一書的第13章的13.1.1節(批量更新和批量刪除),而Hibernate3.0對批量更新和批量刪除提供了支持,能夠直接執行批量更新或批量刪除語句,無需把被更新或刪除的對象先加載到內存中。以下是通過Hibernate3.0執行批量更新的程序代碼:

  1. Session session = sessionFactory.openSession();   
  2. Transaction tx = session.beginTransaction();   
  3. String hqlUpdate = "update Customer set name = :newName where name = :oldName";   
  4. int updatedEntities = s.createQuery( hqlUpdate )   
  5. .setString( "newName", newName )   
  6. .setString( "oldName", oldName )   
  7. .executeUpdate();   
  8. tx.commit();   
  9. session.close();  

以下是通過Hibernate3.0執行批量刪除的程序代碼:

  1. Session session = sessionFactory.openSession();   
  2. Transaction tx = session.beginTransaction();   
  3. String hqlDelete = "delete Customer where name = :oldName";   
  4. int deletedEntities = s.createQuery( hqlDelete )   
  5. .setString( "oldName", oldName )   
  6. .executeUpdate();   
  7. tx.commit();   
  8. session.close();   

6) createSQLQuery()

在Hibernate3.0中,Session接口的createSQLQuery()方法被廢棄,被移到org.hibernate.classic.Session接口中。Hibernate3.0采用新的SQLQuery接口來完成相同的功能。

7)Lifecycle 和 Validatable 接口

Lifecycle和Validatable 接口被廢棄,并且被移到org.hibernate.classic包中。

8)Interceptor接口

在Interceptor 接口中加入了兩個新的方法。用戶創建的Interceptor實現類在升級的過程中,需要為這兩個新方法提供方法體為空的實現。此外,instantiate()方法的參數作了修改,isUnsaved()方法被改名為isTransient()。

9)UserType和CompositeUserType接口

在UserType和CompositeUserType接口中都加入了一些新的方法,這兩個接口被移到org.hibernate.usertype包中,用戶定義的UserType和CompositeUserType實現類必須實現這些新方法。
Hibernate3.0提供了ParameterizedType接口,用于更好的重用用戶自定義的類型。
10)FetchMode類

FetchMode.LAZY 和 FetchMode.EAGER被廢棄。取而代之的分別為FetchMode.SELECT 和FetchMode.JOIN。

11)PersistentEnum類

PersistentEnum被廢棄并刪除。已經存在的應用應該采用UserType來處理枚舉類型。

12)對Blob 和Clob的支持

Hibernate對Blob和Clob實例進行了包裝,使得那些擁有Blob或Clob類型的屬性的類的實例可以被游離、序列化或反序列化,以及傳遞到merge()方法中。

13) Hibernate中供擴展的API的變化

org.hibernate.criterion、 org.hibernate.mapping、 org.hibernate.persister和org.hibernate.collection 包的結構和實現發生了重大的變化。多數基于Hibernate 2.1 的應用不依賴于這些包,因此不會被影響。如果你的應用擴展了這些包中的類,那么必須非常小心的對受影響的程序代碼進行升級。

2. 元數據的變化

1)檢索策略

在Hibernate2.1 中,lazy屬性的默認值為“false”,而在Hibernate3.0中,lazy屬性的默認值為“true”。在升級映射文件時,如果原來的映射文件中的有關元素,如、等沒有顯式設置lazy屬性,那么必須把它們都顯式的設置為lazy=“true”。如果覺得這種升級方式很麻煩,可以采取另一簡單的升級方式:在元素中設置: default-lazy=“false”。

2)對象標識符的映射

unsaved-value屬性是可選的,在多數情況下,Hibernate3.0將把unsaved-value="0" 作為默認值。

在Hibernate3.0 中,當使用自然主鍵和游離對象時,不再強迫實現Interceptor.isUnsaved()方法。如果沒有設置這個方法,當Hibernate3.0無法區分對象的狀態時,會查詢數據庫,來判斷這個對象到底是臨時對象,還是游離對象。不過,顯式的使用 Interceptor.isUnsaved()方法會獲得更好的性能,因為這可以減少Hibernate直接訪問數據庫的次數。

3)集合映射

元素在某些情況下被和元素替代。此外,Hibernate3.0用 元素來替代原來的.元素,用元素來替代原來的元素。

4)DTD

對象-關系映射文件中的DTD文檔,由原來的:
http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd
改為:
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

3 查詢語句的變化

Hibernate3.0 采用新的基于ANTLR的HQL/SQL查詢翻譯器,不過,Hibernate2.1的查詢翻譯器也依然存在。在Hibernate的配置文件中,hibernate.query.factory_class屬性用來選擇查詢翻譯器。例如:
(1)選擇Hibernate3.0的查詢翻譯器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)選擇Hibernate2.1的查詢翻譯器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory

提示:

ANTLR是用純Java語言編寫出來的一個編譯工具,它可生成Java語言或者是C++的詞法和語法分析器,并可產生語法分析樹并對該樹進行遍歷。ANTLR由于是純Java的,因此可以安裝在任意平臺上,但是需要JDK的支持。
Hibernate開發小組盡力保證Hibernate3.0的查詢翻譯器能夠支持Hibernate2.1的所有查詢語句。不過,對于許多已經存在的應用,在升級過程中,也不妨仍然使用Hibernate2.1的查詢翻譯器。
值得注意的是, Hibernate3.0的查詢翻譯器存在一個Bug:不支持某些theta-style連結查詢方言:如Oracle8i的OracleDialect 方言、Sybase11Dialect。解決這一問題的辦法有兩種:(1)改為使用支持ANSI-style連結查詢的方言,如 Oracle9Dialect,(2)如果升級的時候遇到這一問題,那么還是改為使用Hibernate2.1的查詢翻譯器。

1)indices()和elements()函數

在HQL 的select子句中廢棄了indices()和elements()函數,因為這兩個函數的語法很讓用戶費解,可以用顯式的連接查詢語句來替代 select elements(...) 。而在HQL的where子句中,仍然可以使用elements()函數。

【編輯推薦】

  1. 簡述Hibernate中加載并存儲對象
  2. Hibernate傳播性持久化攻略
  3. 深入了解Hibernate自動狀態檢測
  4. 教你如何在Hibernate中實例化集合和代理
  5. Hinerbate單端關聯代理頗析
責任編輯:仲衡 來源: 51cto.com
相關推薦

2009-06-17 09:34:31

Hibernate3Hibernate2連接池

2017-03-14 15:46:30

AndroidiOS不同之處

2021-03-09 16:38:48

加密貨幣比特幣貨幣

2023-08-10 17:23:10

LibreOfficOpenOffice

2021-11-14 22:06:48

JavaPython方式

2009-12-15 18:47:56

Ruby框架OG

2010-04-20 16:07:25

Oracle DRCP

2009-08-20 10:39:00

Java與C#的不同之

2010-01-08 14:35:24

VB.NET模塊

2010-04-26 17:24:56

Unix操作系統

2012-08-23 13:36:27

2012-08-31 11:21:12

云計算大數據

2013-03-11 10:15:25

路由器設備IP地址DHCP

2010-05-24 18:49:13

MySQL數據庫

2010-08-05 11:08:27

DB2存儲過程

2010-08-11 09:30:53

DB2常用函數

2014-08-14 17:11:51

LinuxWindows

2010-04-08 11:11:16

Oracle查詢

2010-09-27 10:43:35

無線路由器

2010-05-06 10:09:44

Oracle in
點贊
收藏

51CTO技術棧公眾號

国产精品女主播| 欧美r级在线观看| 综合一区中文字幕| 国产精品久久久久久久久久免费 | 欧美第一页在线| 久久久久久久穴| 中国字幕a在线看韩国电影| 91社区在线播放| 国产精品白丝jk喷水视频一区| 动漫美女无遮挡免费| 亚洲欧洲自拍| 国产精品久久久久久亚洲毛片| 国产日韩欧美电影在线观看| 婷婷在线精品视频| 久久97久久97精品免视看秋霞| 精品国产999| 亚洲精品一品区二品区三品区| 国产精品羞羞答答在线| 国模吧视频一区| 欧美揉bbbbb揉bbbbb| 强开小嫩苞一区二区三区网站| 日本高清视频www| 日本在线不卡一区| 久久人人爽亚洲精品天堂| 中文字幕永久免费| 性感美女一区二区在线观看| 亚洲视频一二三| 狠狠干一区二区| 一区二区美女视频| 国产日韩欧美三区| 清纯唯美亚洲经典中文字幕| 亚洲女子a中天字幕| 国内精品国语自产拍在线观看| 欧美超碰在线观看| 国产综合婷婷| 中文字幕日韩av综合精品| 日本黄色www| 日本精品裸体写真集在线观看| 亚洲人成小说网站色在线| 久久青青草综合| 97超碰国产在线| 午夜一区不卡| 色综合久久中文字幕综合网小说| 一级性生活毛片| 日本一区二区三区播放| 色琪琪一区二区三区亚洲区| 免费看毛片的网址| 精品欧美色视频网站在线观看| 99在线精品免费| 亚洲自拍小视频| 中文字幕男人天堂| 久久狠狠婷婷| 性欧美视频videos6一9| 亚洲一级生活片| 成人中文视频| 亚洲美女又黄又爽在线观看| 涩视频在线观看| 欧美一区在线观看视频| 欧美中文字幕一区二区三区 | 国产精品福利电影一区二区三区四区| 久久精品magnetxturnbtih| 性生活视频软件| 精品一区中文字幕| 国产精品久久久久久久app| 黑人精品无码一区二区三区AV| 欧美黄色免费| 欧美乱妇高清无乱码| 5566中文字幕| 亚洲区小说区图片区qvod按摩| 精品处破学生在线二十三| 91福利视频免费观看| 日韩成人久久| 日韩欧美国产系列| 日本高清久久久| 青青青国产精品| 欧美日韩小视频| 国产乱女淫av麻豆国产| 91精品一区| 在线播放视频一区| 久久久福利影院| 国产精一区二区| 日韩欧美国产一区二区在线播放| 永久免费黄色片| 天堂av一区| 精品福利在线导航| 强迫凌虐淫辱の牝奴在线观看| 国产精品久久久久久久久久白浆| 亚洲电影免费观看高清完整版在线观看 | 欧美一级一片| 亚洲久久久久久久久久| 国产免费一区二区三区网站免费| 国产va免费精品观看精品视频| 亚洲欧美精品在线| 欧美老女人性生活视频| 99精品视频在线| 欧美精品一区二区三区国产精品| 波多野结衣不卡视频| 亚洲午夜极品| 日本免费在线精品| 一级特黄aa大片| 国产69精品久久99不卡| 久久久久成人精品免费播放动漫| 免费成人av电影| 国产精品网友自拍| 国产在线视频综合| 毛片在线网址| 欧美性色19p| 亚洲综合婷婷久久| 日韩欧美中文字幕在线视频| 日韩欧美高清一区| 亚洲国产无码精品| 国产精品成久久久久| 久久久久久久久综合| 久久精品久久久久久久| 国产又黄又大久久| 国产一区二区无遮挡| 黄色在线小视频| 中文字幕综合网| 欧美日本视频在线观看| 日韩在线你懂得| 亚洲国内精品视频| 任我爽在线视频| 国产深夜精品| 成人在线精品视频| 日本护士...精品国| 国产精品私房写真福利视频| 亚洲国产精品无码观看久久| 韩国成人在线| 亚洲第一二三四五区| 91麻豆制片厂| 亚洲看片一区| 91在线视频九色| 天天av综合网| 亚洲视频资源在线| 91色国产在线| 国内精品国产成人国产三级粉色 | 中文字幕第21页| 成人在线视频你懂的| 色偷偷888欧美精品久久久 | 亚洲乱码国产乱码精品精的特点 | 成人永久免费| 中文日本在线观看| 粉嫩av一区二区三区免费野| 一级黄色片国产| 国产精品亚洲片在线播放| 欧美精品xxx| 国产日韩免费视频| 国产精品热久久久久夜色精品三区| 日韩一级片免费视频| 97久久中文字幕| 一个色综合导航| 亚洲 欧美 成人| 成人91在线观看| 三级在线免费观看| 自拍偷拍欧美日韩| 色噜噜狠狠狠综合曰曰曰| 69亚洲精品久久久蜜桃小说 | 青春草在线观看| 亚洲国产精品久久久久秋霞影院| 久久久久久久高清| 97精品中文字幕| 欧洲美女免费图片一区| 日本韩国在线观看| 亚洲成人777| caoporm在线视频| 91亚洲自偷观看高清| 国产成人福利网站| 久草在线网址| 欧美在线一二三| 国产精品成人无码免费| 久久精品综合| 好吊色欧美一区二区三区| 欧美黑人猛交| 欧美一区二区视频免费观看| 国产aaaaaaaaa| 开心九九激情九九欧美日韩精美视频电影| 国产伦精品一区二区三区视频免费 | 国产性70yerg老太| 丁香亚洲综合激情啪啪综合| 免费看污污视频| 日韩视频一二区| 欧美激情网友自拍| 日韩中文字幕免费在线观看| 亚洲国产精品一区二区尤物区| 午夜视频在线观看国产| 国产亚洲成人一区| 日韩欧美视频第二区| 成人精品动漫| 久久亚洲成人精品| 亚洲黄色a级片| 亚洲韩国精品一区| 免费a级黄色片| 日韩中文字幕1| 一区二区冒白浆视频| av在线成人| 欧美精品电影免费在线观看| 深夜福利免费在线观看| 在线免费观看日韩欧美| 日韩一区二区不卡视频| 成人高清视频在线观看| 99久久激情视频| 日韩久久精品| 成人在线观看网址| 欧美日韩免费看片| 久久久国产成人精品| 蜜桃91麻豆精品一二三区| 午夜电影一区二区| 极品蜜桃臀肥臀-x88av| 丁香另类激情小说| 美女福利视频在线| 小说区亚洲自拍另类图片专区| 国产高清在线精品一区二区三区| 成人免费看黄| 久久人人爽人人爽人人片亚洲| 天天躁日日躁狠狠躁喷水| 欧美曰成人黄网| 欧美激情精品久久| 国产色产综合色产在线视频| 四虎国产精品免费| 日本不卡一区二区三区高清视频| japanese在线视频| 窝窝社区一区二区| 成人黄色在线播放| 免费成人直播| 欧美激情a∨在线视频播放| 国产有码在线| 亚洲风情亚aⅴ在线发布| 亚洲欧美日韩一区二区三区四区| 亚洲影视在线播放| 亚洲熟女毛茸茸| 91在线视频观看| 亚洲综合123| 免费精品视频在线| 国内外成人激情视频| 欧美国产综合| 亚洲一区二三| 国产一区二区精品福利地址| 国产精品福利视频| 国产精品久久免费视频| 欧美亚洲成人网| 怡红院在线播放| 亚洲午夜久久久久久久| 免费国产羞羞网站视频| 欧美群妇大交群中文字幕| 久久狠狠高潮亚洲精品| 日韩美女精品在线| 丰满少妇高潮一区二区| 成人一道本在线| 国产成年人视频网站| 久久久夜精品| 女人被男人躁得好爽免费视频| 国产真实乱偷精品视频| 亚洲精品护士| 欧美a级免费视频| 天天综合一区| 夜夜爽99久久国产综合精品女不卡 | 国产精品久久久久影院色老大| 国产麻豆天美果冻无码视频| 成人综合在线视频| 91精品国产高清91久久久久久| 久久精品国产**网站演员| 日本爱爱免费视频| 日日摸夜夜添夜夜添亚洲女人| 欧美 日韩精品| 天堂蜜桃一区二区三区| 50路60路老熟妇啪啪| 性欧美xxxx大乳国产app| 免费一级特黄特色毛片久久看| 欧美特黄a级高清免费大片a级| 中文字幕第50页| 欧美日韩一区二区国产| 免费特级黄色片| 国产情侣久久| 免费无码av片在线观看| 久久最新视频| 久久久国产欧美| 久久99国产乱子伦精品免费| 最新天堂在线视频| 国产真实乱子伦精品视频| av在线免费观看不卡| 国产a级毛片一区| 亚洲av成人片色在线观看高潮| 91丨porny丨国产入口| 色哟哟精品观看| 亚洲国产精品激情在线观看 | 香蕉成人在线| 成人深夜直播免费观看| 国产va免费精品观看精品| 国产精品一区二区久久精品| 深夜视频一区二区| 91精品视频网站| av日韩在线免费观看| 96久久精品| 国内视频在线精品| 麻豆精品视频| 欧美少妇xxxx| 日韩中文字幕一区| 亚洲综合小说| 国产精品va在线观看无码| 99热国内精品| 日日摸日日碰夜夜爽无码| 另类激情亚洲| 青青草久久伊人| 成人精品电影在线观看| 国产精品免费电影| 午夜18视频在线观看| 亚洲人成绝费网站色www| 日本在线观看免费| 国外色69视频在线观看| 91国拍精品国产粉嫩亚洲一区| 亚洲影院在线看| 亚洲区小说区图片区qvod按摩| 一区二区三区欧美成人| 中文精品视频| 91亚洲免费视频| 波多野结衣一区二区三区| jizz中文字幕| 国产精品欧美经典| 日韩污视频在线观看| 精品视频一区 二区 三区| 黄色av一区二区三区| 亚洲精品国产综合久久| 免费超碰在线| 日本不卡视频在线播放| 亚洲精品国产九九九| 日本一区二区在线视频观看| 欧美激情综合| 日韩高清第一页| 91在线视频官网| 精品在线观看一区| 日韩欧美成人精品| 不卡视频免费在线观看| 在线视频欧美性高潮| 九色porny视频在线观看| 91欧美日韩一区| 日韩1区2区| 国产a级一级片| 日韩高清在线一区| 亚洲av综合一区二区| 亚洲美女视频在线观看| 伊人网综合在线| 国产午夜精品全部视频在线播放| 丰乳肥臀在线| 亚洲专区国产精品| 日韩aaaa| 亚洲性生活网站| 日韩一二三四| 久久91精品国产91久久久| 精品久久毛片| 日本一区二区在线视频| 国产欧美一区二区三区国产幕精品| 国产一级片中文字幕| 久久久国产精华| 日韩精品一区二区在线播放| 精品福利av导航| 人人超在线公开视频| 91精品久久久久久久久久入口 | 久久成人18免费观看| 国产一卡二卡三卡四卡| 国产精品免费视频观看| 欧美a视频在线观看| 精品视频在线观看日韩| 男插女视频久久久| 波多野结衣精品久久| 欧美日韩一区二区三区四区在线观看| 免费在线观看污网站| 亚洲欧洲另类国产综合| 中文字幕一区二区三区四区免费看| 亚洲国产欧美一区| 美女av在线免费看| 国产在线一区二区三区四区| 国产综合激情| 日本黄色片在线播放| 红桃av永久久久| 无码精品一区二区三区在线| 57pao成人国产永久免费| 中文字幕中文字幕精品| 老熟妇仑乱视频一区二区| 久久久久成人黄色影片| 最近中文字幕在线免费观看| 主播福利视频一区| japansex久久高清精品| 大地资源网在线观看免费官网 | 人妻精品久久久久中文字幕69| 亚洲美女区一区| 欧美一级淫片aaaaaa| 欧美一级片在线播放| 西野翔中文久久精品字幕| 欧美精品成人网| 亚洲欧美另类久久久精品| 亚洲精品一区二区三区新线路| 91爱爱小视频k| 精品久久中文| 污污视频在线免费| 亚洲影院免费观看| 天堂v视频永久在线播放| 国产精品免费电影| 欧美一区视频| 大黑人交xxx极品hd| 欧美三级电影网站|