Hibernate5新特性介紹
在hibernate5中,有了一些新的變動:
- 新引導(dǎo) API
- Spatial/GIS 支持
- Java 8 支持
- 擴展 AUTO id 生成支持
- 命名策略分離
- 屬性轉(zhuǎn)換器支持
- 更好的 “bulk id table” 支持
- 事務(wù)管理
- 模式工具鏈
- Session API類化
- 改進(jìn) OSGi 支持
- 改進(jìn) bytecode 增強功能
新的引導(dǎo)API
用來引導(dǎo)Hibernate(建立一個SessionFactory)的經(jīng)典方式一直都是利用Configuration配置類。從hibernate的古老版本到現(xiàn)在,它一直支持用戶按任意的順序添加新的配置和關(guān)系映射,并允許我們在程序運行過程中查詢獲取相應(yīng)的狀態(tài)和映射信息。但這也意味著我們不能根據(jù)一些實時配置高效地建立映射信息。這導(dǎo)致許多限制和問題。
5.0引入了一個新的引導(dǎo)API旨在減輕這些限制和問題,同時允許我們更好的完成整合工作。想要連接更多關(guān)于新的引導(dǎo)API配置指南可到hibernate 官網(wǎng)的User Guide部分
在一定的限制上,Configuration配置方法仍然可以使用,不過它的一些方法已被刪除。在新的引導(dǎo)API底層實現(xiàn)部分,Configuration類仍大有作用.
Spatial/GIS 支持
Hibernate Spatial是一個已經(jīng)存在了數(shù)年的項目.Karel Maesen對此做出了卓越貢獻(xiàn).
從hibernate5.0開始Hibernate Spatial已經(jīng)是Hibernate項目的一部分,來使其跟上發(fā)展的主流,如果你的項目需要使用到GIS數(shù)據(jù),我們高度推薦你嘗試使用hibernate-spatial
支持Java 8
雖然并非完全支持,更準(zhǔn)確來說,hibernate5.0增加了對Java 8 Date 和Time API的支持,以使我們能夠更輕松地完成我們的實體映射類的配置屬性到數(shù)據(jù)庫的支持.這種支持通過使用專用利器 hibernate-java8來隔離java8的依賴性.有關(guān)更多信息,請參閱hibernate官方API Domain Model Mapping Guide中的Basic Types章節(jié)
擴展 AUTO id 生成支持
JPA定義的GenerationType.AUTO屬性僅支持?jǐn)?shù)字類型.從5.0開始,hibernate高度擴展并支持更廣泛的類型,包括內(nèi)置支持?jǐn)?shù)字類型(如整型(Integer)\長整型(Long))和UUID.通過新的拓展類org.hibernate.boot.model.IdGeneratorStrategyInterpreter,用戶還能自由地定制自己的策略來使用GenerationType.AUTO屬性
命名策略分離
為了支持更好地接口設(shè)計,命名策略被分離成兩個主要部分:
1. org.hibernate.boot.model.naming.ImplicitNamingStrategy:使用此屬性當(dāng)
我們使用的表或列沒有明確指定一個使用的名稱
2. org.hibernate.boot.model.naming.PhysicalNamingStrategy:用于轉(zhuǎn)換“邏輯名稱”(隱式或顯式)的表或列成一個物理名稱
屬性轉(zhuǎn)換器支持
hibernate 5.0 極大地改進(jìn)了對JPA2.1屬性轉(zhuǎn)換器的支持:
1. 充分地支持非@Enumerated注解的枚舉值的使用
2. 適用于與@Nationalized結(jié)合使用的支持
3. 可以在hbm.xml文件中通過使用下列格式設(shè)置type="converter:fully.qualified.AttributeConverterName"
4. 整合了hibernate-envers
5. 集合數(shù)值,映射鍵值
6. 現(xiàn)在能夠有效處理null值
7. 支持參數(shù)化類型的轉(zhuǎn)換
更好的 “bulk id table” 支持
對于bulk id table的支持已經(jīng)被重新設(shè)計以更好地適配不同數(shù)據(jù)庫的支持
事務(wù)管理
事務(wù)SPI也完成了主要的重構(gòu)設(shè)計作為hibernate5.0更新的一部分.從用戶的角度來看,這些一般只在涉及到配置部分時才會有所接觸,此前應(yīng)用程序直接將與不同的后端事務(wù)策略通過org.hibernate.Transaction有效工作.在5.0中,一定程度地支持已經(jīng)添加進(jìn)來,org.hibernate.Transaction的API實現(xiàn),現(xiàn)在是永遠(yuǎn)不變的。在后端,該org.hibernate.Transaction IMPL會涉及到org.hibernate.resource.transaction.TransactionCoordinator它代表了“事務(wù)上下文”根據(jù)后端事務(wù)策略給定的會話。用戶一般不需要關(guān)心的區(qū)別。
在此我們要注意這種變化,它可能會影響到我們的引導(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é),請查看JAVADocs中的org.hibernate.cfg.AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY
下面的短名被識別為:
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)
請參閱用戶手冊了解更多詳細(xì)信息。
模式工具鏈
hibernate5.0對于模式工具鏈提供了大量的支持(比如導(dǎo)出\驗證\導(dǎo)入等)
Session API類化
Hibernate的大量內(nèi)置API,比如(Session等),全部省級成類,不用再進(jìn)行復(fù)雜的類型轉(zhuǎn)化
改進(jìn) OSGi 支持
這始于一個不滿的脆弱性hibernate-osgi測試.第一部分是一個使用了Pax Exam 和 Karaf的更好的測試啟動.這會導(dǎo)致我們生成一個hibernate Karaf風(fēng)格的文件
OSGi支持經(jīng)過了很多改善,這需要歸功了來自Karaf和Pax開發(fā)者和用戶的支持
改進(jìn) bytecode 增強功能
在hibernate5.0的文檔中已經(jīng)對此進(jìn)行了很多工作,但它仍有很大的提升空間
總結(jié)
以上所述是小編給大家介紹的Hibernate5新特性介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Java實現(xiàn)學(xué)生管理系統(tǒng)詳解流程
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
Java實現(xiàn)批量導(dǎo)出導(dǎo)入數(shù)據(jù)及附件文件zip包
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)批量導(dǎo)出導(dǎo)入數(shù)據(jù)及附件文件zip包的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一2022-09-09
Springboot接收?Form?表單數(shù)據(jù)的示例詳解
這篇文章主要介紹了Springboot接收?Form?表單數(shù)據(jù)的實例代碼,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
package打包一個springcloud項目的某個微服務(wù)報錯問題
這篇文章主要介紹了package打包一個springcloud項目的某個微服務(wù)報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot2.7?WebSecurityConfigurerAdapter類過期配置
這篇文章主要為大家介紹了SpringBoot2.7中WebSecurityConfigurerAdapter類過期應(yīng)該如何配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Spring Cloud Consul實現(xiàn)選舉機制的代碼工程
Spring Cloud Consul 是 Spring Cloud 提供的對 HashiCorp Consul 的支持,它是一種基于服務(wù)網(wǎng)格的工具,用于實現(xiàn)服務(wù)注冊、發(fā)現(xiàn)、配置管理和健康檢查,本文給大家介紹了如何用Spring Cloud Consul實現(xiàn)選舉機制,需要的朋友可以參考下2024-11-11
Java構(gòu)造器與傳值學(xué)習(xí)總結(jié)
這篇文章主要為大家詳細(xì)介紹了Java構(gòu)造器與傳值學(xué)習(xí)總結(jié),文中示例介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01

