本指南讨论从 Hibernate ORM 5.0 版迁移到 5.1 版。有关从早期版本迁移的信息,请参阅任何其他相关的迁移指南。

Oracle12cDialect 将 byte[] 和 Byte[] 映射到 BLOB

以前版本的 Hibernate 将 byte[]Byte[] 映射到 Oracle 的 LONG RAW 数据类型(通过 JDBC LONGVARBINARY 类型)。Oracle 已弃用 LONG RAW 数据类型,可能从 8i 版本开始。因此,决定让 Hibernate 将 byte[]Byte[] 映射到 Oracle 的 BLOB

但是,为了向后兼容性,并且不破坏现有应用程序,还决定将此更改限制在 Oracle12cDialect 中。因此,从 5.1 版开始,使用 Oracle12cDialect 并隐式映射 byte[]Byte[] 值的应用程序将开始看到这些值作为 BLOB 数据处理,而不是 LONG RAW 数据。对于希望继续使用 Oracle12cDialect 并继续隐式将 byte[]Byte[] 属性映射到 LONG RAW 的现有应用程序,可以使用一个新的配置设置来启用此功能:hibernate.dialect.oracle.prefer_longvarbinary,默认值为 false(映射到 BLOB)。

架构管理工具的更改

更改主要集中在以下方面:

  • 统一处理 hbm2ddl.auto 和 Hibernate 的 JPA 架构生成支持。

  • 从 SPI 中删除 JDBC 问题,以便于真正替换(用于 OGM)。

这些更改只会对直接使用以下任何类的应用程序产生迁移问题:

  • org.hibernate.tool.hbm2ddl.SchemaExport

  • org.hibernate.tool.hbm2ddl.SchemaUpdate

  • org.hibernate.tool.hbm2ddl.SchemaValidator

  • org.hibernate.tool.schema.spi.SchemaManagementTool 或其任何委托