Hibernate ORM 5有什么新功能?

Shr*_*res 51 java orm hibernate jpa hibernate-5.x

我刚看到第四个候选人已经发布了Hibernate 5.与早期版本相比,5中有什么新东西?

Bac*_*ria 46

在Hibernate 5.x中添加/增强了一些令人兴奋的功能.快点看看.

1. Hibernate搜索

Hibernate Search可以透明地为您的对象编制索引,并提供快速的常规,全文和地理位置搜索.易用性和易于集群是核心.

  • 实体的全文搜索 - 通过近似(模糊搜索)查找
  • 集群友好 - 提供了几种易于设置的集群策略
  • 分面和地理定位 - 地理定位实体就像@Spatial一样简单

有关Hibernate Search的更多详细信息,请参阅此内容.

2. Hibernate Validator

Hibernate Validator附带了一些内置的验证规则,如Email,Length,NotBlank等.

使用基于注释的约束以标准化方式表达验证规则,并从与各种框架的透明集成中受益.

有关Hibernate Validator的更多详细信息,请查看此内容.

3.改进了Java 8支持

支持Java 8日期/时间数据类型(JSR 310),可以通过@Past和@Future进行验证.还通过改进的ValidatedValueUnwrapper支持可选和JavaFX类型.

4. Hibernate OGM

刚刚发布了第一个稳定版本.

5. Bootstrapping API

新的自举API - 更好的确定性,更好的集成


其他一些事情:

  • 扫描支持非JPA用法
  • 已删除NamingStrategy以支持更好的API
  • 能够为标记为GenerationType #AUTO的id属性处理其他Java类型.内置支持Number和UUID.可通过新的org.hibernate.boot.model.IdGeneratorStrategyInterpreter扩展进行扩展.
  • 此外,对AttributeConverters的支持已得到扩展并得到更充分的实现

有关详细信息,请查看Hibernate ORM路线图.


Vla*_*cea 42

在Hibernate 5中有很多已经改变的东西:

  1. 新的bootstrap API,因此我们可以编程persistence.xml方式引导JPA环境而无需文件.

  2. 从5.0开始,Hibernate Spatial是Hibernate项目的一部分,因此我们也可以处理GIS数据.

  3. Java的8日期和时间类型的域模型映射支持.标准SQL日期/时间类型与支持的Java 8日期/时间类类型之间的映射如下所示;

    • 日期: java.time.LocalDate
    • 时间:java.time.LocalTime,java.time.OffsetTime
    • TIMESTAMP: ,,java.time.Instantjava.time.LocalDateTimejava.time.OffsetDateTimejava.time.ZonedDateTime
  4. 字节码增强机制从头开始重新设计,Hibernate同时具有Maven和Gradle插件.我们可以通过字节码检测来增强三个主要方面:

    • 延迟初始化:可以声明字段LAZY,只有在第一次访问时才会获取它们.

    • 脏检查:实体得到增强,以便它们可以跟踪在持久化上下文中加载后更改的所有属性.

    • 双向关联:即使开发人员只更新单个方,也可以自动同步双向关联的两端.

  5. Hibernate的本机API(Session等)已更新为使用泛型类型.获取实体时无需强制转换.

  6. Hibernate 5.0将其扩展到更广泛的类型集(例如UUID).

  7. 通过引用二级缓存.此功能允许将实体引用直接存储到不可变实体的二级缓存中.

  8. 从Hibernate 5.0开始,我们有一个全新的用户指南,它是从头开始编写的.

Hibernate 5.1增加了以下功能:

  1. 您现在可以在JPQL和HQL查询中加入不相关的实体
  2. 识别器的多实体负载

Hibernate 5.2增加了对以下内容的支持:

  1. Java 1.8,所以你现在可以使用Query.stream()
  2. Hibernate Session扩展,EntityManager因此您可以直接访问所有JPA方法Session
  3. 支持JCache
  4. 会话级批量大小
  5. 全局时区设置(例如UTC)TimestampTime
  6. 明确的传递提示
  7. 更高效的JPQL和HQL解析常量值
  8. hibernate.connection.provider_disables_autocommit资源本地事务优化.
  9. 更好地处理Criteria API文字.