溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hibernate5新特性介紹

發(fā)布時(shí)間:2020-09-08 04:05:54 來(lái)源:腳本之家 閱讀:139 作者:動(dòng)力節(jié)點(diǎn) 欄目:編程語(yǔ)言

在hibernate5中,有了一些新的變動(dòng):

  •   新引導(dǎo) API
  • Spatial/GIS 支持
  • Java 8 支持
  • 擴(kuò)展 AUTO id 生成支持
  • 命名策略分離
  • 屬性轉(zhuǎn)換器支持
  • 更好的 “bulk id table” 支持
  • 事務(wù)管理
  • 模式工具鏈
  • Session API類(lèi)化
  • 改進(jìn) OSGi 支持
  • 改進(jìn) bytecode 增強(qiáng)功能

新的引導(dǎo)API

用來(lái)引導(dǎo)Hibernate(建立一個(gè)SessionFactory)的經(jīng)典方式一直都是利用Configuration配置類(lèi)。從hibernate的古老版本到現(xiàn)在,它一直支持用戶按任意的順序添加新的配置和關(guān)系映射,并允許我們?cè)诔绦蜻\(yùn)行過(guò)程中查詢獲取相應(yīng)的狀態(tài)和映射信息。但這也意味著我們不能根據(jù)一些實(shí)時(shí)配置高效地建立映射信息。這導(dǎo)致許多限制和問(wèn)題。 

5.0引入了一個(gè)新的引導(dǎo)API旨在減輕這些限制和問(wèn)題,同時(shí)允許我們更好的完成整合工作。想要連接更多關(guān)于新的引導(dǎo)API配置指南可到hibernate 官網(wǎng)的User Guide部分 

在一定的限制上,Configuration配置方法仍然可以使用,不過(guò)它的一些方法已被刪除。在新的引導(dǎo)API底層實(shí)現(xiàn)部分,Configuration類(lèi)仍大有作用.

Spatial/GIS 支持

Hibernate Spatial是一個(gè)已經(jīng)存在了數(shù)年的項(xiàng)目.Karel Maesen對(duì)此做出了卓越貢獻(xiàn). 

從hibernate5.0開(kāi)始Hibernate Spatial已經(jīng)是Hibernate項(xiàng)目的一部分,來(lái)使其跟上發(fā)展的主流,如果你的項(xiàng)目需要使用到GIS數(shù)據(jù),我們高度推薦你嘗試使用hibernate-spatial

支持Java 8

雖然并非完全支持,更準(zhǔn)確來(lái)說(shuō),hibernate5.0增加了對(duì)Java 8 Date 和Time API的支持,以使我們能夠更輕松地完成我們的實(shí)體映射類(lèi)的配置屬性到數(shù)據(jù)庫(kù)的支持.這種支持通過(guò)使用專(zhuān)用利器 hibernate-java8來(lái)隔離java8的依賴(lài)性.有關(guān)更多信息,請(qǐng)參閱hibernate官方API Domain Model Mapping Guide中的Basic Types章節(jié)

擴(kuò)展 AUTO id 生成支持

JPA定義的GenerationType.AUTO屬性僅支持?jǐn)?shù)字類(lèi)型.從5.0開(kāi)始,hibernate高度擴(kuò)展并支持更廣泛的類(lèi)型,包括內(nèi)置支持?jǐn)?shù)字類(lèi)型(如整型(Integer)\長(zhǎng)整型(Long))和UUID.通過(guò)新的拓展類(lèi)org.hibernate.boot.model.IdGeneratorStrategyInterpreter,用戶還能自由地定制自己的策略來(lái)使用GenerationType.AUTO屬性

命名策略分離

為了支持更好地接口設(shè)計(jì),命名策略被分離成兩個(gè)主要部分: 

1. org.hibernate.boot.model.naming.ImplicitNamingStrategy:使用此屬性當(dāng) 

我們使用的表或列沒(méi)有明確指定一個(gè)使用的名稱(chēng) 

2. org.hibernate.boot.model.naming.PhysicalNamingStrategy:用于轉(zhuǎn)換“邏輯名稱(chēng)”(隱式或顯式)的表或列成一個(gè)物理名稱(chēng)

屬性轉(zhuǎn)換器支持

hibernate 5.0 極大地改進(jìn)了對(duì)JPA2.1屬性轉(zhuǎn)換器的支持: 

1. 充分地支持非@Enumerated注解的枚舉值的使用 

2. 適用于與@Nationalized結(jié)合使用的支持 

3. 可以在hbm.xml文件中通過(guò)使用下列格式設(shè)置type="converter:fully.qualified.AttributeConverterName" 

4. 整合了hibernate-envers 

5. 集合數(shù)值,映射鍵值 

6. 現(xiàn)在能夠有效處理null值 

7. 支持參數(shù)化類(lèi)型的轉(zhuǎn)換

更好的 “bulk id table” 支持

對(duì)于bulk id table的支持已經(jīng)被重新設(shè)計(jì)以更好地適配不同數(shù)據(jù)庫(kù)的支持

事務(wù)管理

事務(wù)SPI也完成了主要的重構(gòu)設(shè)計(jì)作為hibernate5.0更新的一部分.從用戶的角度來(lái)看,這些一般只在涉及到配置部分時(shí)才會(huì)有所接觸,此前應(yīng)用程序直接將與不同的后端事務(wù)策略通過(guò)org.hibernate.Transaction有效工作.在5.0中,一定程度地支持已經(jīng)添加進(jìn)來(lái),org.hibernate.Transaction的API實(shí)現(xiàn),現(xiàn)在是永遠(yuǎn)不變的。在后端,該org.hibernate.Transaction IMPL會(huì)涉及到org.hibernate.resource.transaction.TransactionCoordinator它代表了“事務(wù)上下文”根據(jù)后端事務(wù)策略給定的會(huì)話。用戶一般不需要關(guān)心的區(qū)別。 

在此我們要注意這種變化,它可能會(huì)影響到我們的引導(dǎo)配置.以前的應(yīng)用我們指定hibernate.transaction.factory_class并且指向了org.hibernate.engine.transaction.spi.TransactionFactory FQN.在hibernate5.0中,新約定是org.hibernate.resource.transaction.TransactionCoordinatorBuilder以及特定使用 hibernate.transaction.coordinator_class setting.關(guān)于更多細(xì)節(jié),請(qǐng)查看JAVADocs中的org.hibernate.cfg.AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY 

下面的短名被識(shí)別為: 

jdbc::(默認(rèn)值)表示使用基于JDBC的事務(wù)(org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl) 

jta::says示使用基于JTA的事務(wù) (org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl) 

請(qǐng)參閱用戶手冊(cè)了解更多詳細(xì)信息。

模式工具鏈

hibernate5.0對(duì)于模式工具鏈提供了大量的支持(比如導(dǎo)出\驗(yàn)證\導(dǎo)入等)

Session API類(lèi)化

Hibernate的大量?jī)?nèi)置API,比如(Session等),全部省級(jí)成類(lèi),不用再進(jìn)行復(fù)雜的類(lèi)型轉(zhuǎn)化

改進(jìn) OSGi 支持

這始于一個(gè)不滿的脆弱性hibernate-osgi測(cè)試.第一部分是一個(gè)使用了Pax Exam 和 Karaf的更好的測(cè)試啟動(dòng).這會(huì)導(dǎo)致我們生成一個(gè)hibernate Karaf風(fēng)格的文件 

OSGi支持經(jīng)過(guò)了很多改善,這需要?dú)w功了來(lái)自Karaf和Pax開(kāi)發(fā)者和用戶的支持

改進(jìn) bytecode 增強(qiáng)功能

在hibernate5.0的文檔中已經(jīng)對(duì)此進(jìn)行了很多工作,但它仍有很大的提升空間

總結(jié)

以上所述是小編給大家介紹的Hibernate5新特性介紹,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI