hibernate5(1)新特性展示

简介: <div class="markdown_views"><p>在hibernate5中,有了一些新的变动:</p><ul><li>新引导 API</li><li>Spatial/GIS 支持</li><li>Java 8 支持</li><li>扩展 AUTO id 生成支持</li><li>命名策略分离</li><li>属性转换器支持</li><li>更好的

在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的文档中已经对此进行了很多工作,但它仍有很大的提升空间,更多信息查看http://hibernate.org/orm/documentation/5.0/

目录
相关文章
|
7月前
|
SQL 缓存 Java
框架分析(9)-Hibernate
框架分析(9)-Hibernate
|
1月前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
18 1
|
4月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
61 1
|
4月前
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
146 0
|
5月前
|
SQL Java 数据库连接
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
91 0
|
6月前
|
Java 数据库连接 数据库
探索JPA生态:Hibernate与其他ORM框架的对比分析
【6月更文挑战第25天】**JPA标准下的Hibernate是流行的ORM实现,提供丰富功能如二级缓存和延迟加载,但其学习曲线较陡,性能优化复杂。相比如MyBatis,Hibernate的JPQL更面向对象,MyBatis则接近SQL。选择ORM需考虑项目需求和个人偏好。**
98 0
|
6月前
|
Java 数据库连接
杨老师课堂之JavaEE三大框架Hibernate入门第一课
杨老师课堂之JavaEE三大框架Hibernate入门第一课
36 0
|
7月前
|
SQL Java 数据库连接
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
|
7月前
|
SQL Java 关系型数据库
数据库访问:什么是Hibernate框架?
【4月更文挑战第15天】Hibernate是开源ORM框架,将Java对象与数据库表映射,简化对象-关系映射,提升开发效率和性能。它自动化处理数据操作,支持多种数据库,自动生成SQL,提供配置选项和高级特性,减少手动SQL编写,便于切换数据库。
75 2