Hibernate5新特性介绍

 更新时间:2017年09月13日 10:13:42   作者:动力节点  
hibernate5中有了一些新的变动,下面脚本之家小编把Hibernate5新特性相关知识,分享到脚本之家平台,感兴趣的朋友参考下吧

在hibernate5中,有了一些新的变动:

  •   新引导 API
  • Spatial/GIS 支持
  • Java 8 支持
  • 扩展 AUTO id 生成支持
  • 命名策略分离
  • 属性转换器支持
  • 更好的 “bulk id table” 支持
  • 事务管理
  • 模式工具链
  • Session API类化
  • 改进 OSGi 支持
  • 改进 bytecode 增强功能

新的引导API

用来引导Hibernate(建立一个SessionFactory)的经典方式一直都是利用Configuration配置类。从hibernate的古老版本到现在,它一直支持用户按任意的顺序添加新的配置和关系映射,并允许我们在程序运行过程中查询获取相应的状态和映射信息。但这也意味着我们不能根据一些实时配置高效地建立映射信息。这导致许多限制和问题。 

5.0引入了一个新的引导API旨在减轻这些限制和问题,同时允许我们更好的完成整合工作。想要连接更多关于新的引导API配置指南可到hibernate 官网的User Guide部分 

在一定的限制上,Configuration配置方法仍然可以使用,不过它的一些方法已被删除。在新的引导API底层实现部分,Configuration类仍大有作用.

Spatial/GIS 支持

Hibernate Spatial是一个已经存在了数年的项目.Karel Maesen对此做出了卓越贡献. 

从hibernate5.0开始Hibernate Spatial已经是Hibernate项目的一部分,来使其跟上发展的主流,如果你的项目需要使用到GIS数据,我们高度推荐你尝试使用hibernate-spatial

支持Java 8

虽然并非完全支持,更准确来说,hibernate5.0增加了对Java 8 Date 和Time API的支持,以使我们能够更轻松地完成我们的实体映射类的配置属性到数据库的支持.这种支持通过使用专用利器 hibernate-java8来隔离java8的依赖性.有关更多信息,请参阅hibernate官方API Domain Model Mapping Guide中的Basic Types章节

扩展 AUTO id 生成支持

JPA定义的GenerationType.AUTO属性仅支持数字类型.从5.0开始,hibernate高度扩展并支持更广泛的类型,包括内置支持数字类型(如整型(Integer)\长整型(Long))和UUID.通过新的拓展类org.hibernate.boot.model.IdGeneratorStrategyInterpreter,用户还能自由地定制自己的策略来使用GenerationType.AUTO属性

命名策略分离

为了支持更好地接口设计,命名策略被分离成两个主要部分: 

1. org.hibernate.boot.model.naming.ImplicitNamingStrategy:使用此属性当 

我们使用的表或列没有明确指定一个使用的名称 

2. org.hibernate.boot.model.naming.PhysicalNamingStrategy:用于转换“逻辑名称”(隐式或显式)的表或列成一个物理名称

属性转换器支持

hibernate 5.0 极大地改进了对JPA2.1属性转换器的支持: 

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

2. 适用于与@Nationalized结合使用的支持 

3. 可以在hbm.xml文件中通过使用下列格式设置type="converter:fully.qualified.AttributeConverterName" 

4. 整合了hibernate-envers 

5. 集合数值,映射键值 

6. 现在能够有效处理null值 

7. 支持参数化类型的转换

更好的 “bulk id table” 支持

对于bulk id table的支持已经被重新设计以更好地适配不同数据库的支持

事务管理

事务SPI也完成了主要的重构设计作为hibernate5.0更新的一部分.从用户的角度来看,这些一般只在涉及到配置部分时才会有所接触,此前应用程序直接将与不同的后端事务策略通过org.hibernate.Transaction有效工作.在5.0中,一定程度地支持已经添加进来,org.hibernate.Transaction的API实现,现在是永远不变的。在后端,该org.hibernate.Transaction IMPL会涉及到org.hibernate.resource.transaction.TransactionCoordinator它代表了“事务上下文”根据后端事务策略给定的会话。用户一般不需要关心的区别。 

在此我们要注意这种变化,它可能会影响到我们的引导配置.以前的应用我们指定hibernate.transaction.factory_class并且指向了org.hibernate.engine.transaction.spi.TransactionFactory FQN.在hibernate5.0中,新约定是org.hibernate.resource.transaction.TransactionCoordinatorBuilder以及特定使用 hibernate.transaction.coordinator_class setting.关于更多细节,请查看JAVADocs中的org.hibernate.cfg.AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY 

下面的短名被识别为: 

jdbc::(默认值)表示使用基于JDBC的事务(org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl) 

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

请参阅用户手册了解更多详细信息。

模式工具链

hibernate5.0对于模式工具链提供了大量的支持(比如导出\验证\导入等)

Session API类化

Hibernate的大量内置API,比如(Session等),全部省级成类,不用再进行复杂的类型转化

改进 OSGi 支持

这始于一个不满的脆弱性hibernate-osgi测试.第一部分是一个使用了Pax Exam 和 Karaf的更好的测试启动.这会导致我们生成一个hibernate Karaf风格的文件 

OSGi支持经过了很多改善,这需要归功了来自Karaf和Pax开发者和用户的支持

改进 bytecode 增强功能

在hibernate5.0的文档中已经对此进行了很多工作,但它仍有很大的提升空间

总结

以上所述是小编给大家介绍的Hibernate5新特性介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java杂谈之重复代码是什么

    Java杂谈之重复代码是什么

    刚开始工作时,总有人开玩笑说,编程实际上就是 CV,调侃很多程序员写程序依靠的是复制粘贴。至今,很多初级甚至高级程序员写代码依旧是CV,就是把其他项目里的一段代码复制过来,稍加改动,然后,跑一下没有大问题就完事。这就是在给其他人挖坑
    2021-09-09
  • java实现简单银行ATM系统

    java实现简单银行ATM系统

    这篇文章主要为大家详细介绍了java实现简单银行ATM系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Netty分布式ByteBuf使用命中缓存的分配解析

    Netty分布式ByteBuf使用命中缓存的分配解析

    这篇文章主要为大家介绍了Netty分布式ByteBuf 使用命中缓存的分配解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • springboot整合mybatisplus的方法详解

    springboot整合mybatisplus的方法详解

    这篇文章主要为大家详细介绍了springboot整合mybatisplus的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java与Spring boot后端项目Bug超全总结

    Java与Spring boot后端项目Bug超全总结

    Spring Boot是一个开源的 Java 开发框架,它的目的是简化Spring应用程序的开发和部署,下面这篇文章主要给大家介绍了关于Java与Spring boot后端项目Bug的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • springboot mybatis druid配置多数据源教程

    springboot mybatis druid配置多数据源教程

    这篇文章主要介绍了springboot mybatis druid配置多数据源教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • springboot aop配合反射统一签名验证实践

    springboot aop配合反射统一签名验证实践

    这篇文章主要介绍了springboot aop配合反射统一签名验证实践,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot中的配置文件加载优先级详解

    SpringBoot中的配置文件加载优先级详解

    这篇文章主要介绍了SpringBoot中的配置文件加载优先级详解,springboot启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件,需要的朋友可以参考下
    2024-01-01
  • 深入理解Hibernate中的懒加载异常及解决方法

    深入理解Hibernate中的懒加载异常及解决方法

    这篇文章主要为大家介绍了深入理解Hibernate中的懒加载异常及解决方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-10-10
  • 手动部署java项目到k8s中的实现

    手动部署java项目到k8s中的实现

    本文主要介绍了手动部署java项目到k8s中的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论