Describes the new features and capabilities added to Hibernate ORM in 7.2.
If migrating from earlier versions, be sure to also check out the Migration Guide for discussion of impactful changes. |
@EmbeddedTable
The Jakarta Persistence compliant way to specify the table to which an embedded value maps is tedious, at best, requiring us of multiple @AttributeOverride
and/or @AssociationOverride
annotations -
@Entity
@Table(name="primary")
@SecondaryTable(name="secondary")
class Person {
...
@Embedded
@AttributeOverride(name="street",
column=@Column(table="secondary"))
@AttributeOverride(name="city",
column=@Column(table="secondary"))
@AttributeOverride(name="state",
column=@Column(table="secondary"))
@AttributeOverride(name="zip",
column=@Column(table="secondary"))
Address address;
}
Hibernate now provides the EmbeddedTable
annotation to help make this easier -
@Entity
@Table(name="primary")
@SecondaryTable(name="secondary")
class Person {
...
@Embedded
@EmbeddedTable("secondary")
Address address;
}
The annotation is only legal on top-level embedded. Placement on nested embedded values will be ignored.
Introduction of FindMultipleOption
Previous versions of Hibernate supported loading multiple entities of a type via the Session#byMultipleIds
method.
7.0 added Session#findMultiple
methods which accepted FindOption
configuration; but, for options specific to multiple-id loading, users still had to revert to Session#byMultipleIds
.
7.2 covers this gap and introduces new FindMultipleOption
configuration -
-
SessionCheckMode
-
OrderingMode
-
RemovalsMode
Session#byMultipleIds
and MultiIdentifierLoadAccess
have been deprecated.
Child StatelessSession
Creation of child StatelessSession
is now supported, just as with child Session
.
This is a StatelessSession
which shares "transactional context" with a parent Session
or StatelessSession
.
Use Session#statelessWithOptions
or StatelessSession#statelessWithOptions
instead of #sessionWithOptions
.
Session parent = ...;
StatelessSession child = parent
.statelessWithOptions()
.connection()
...
.open();
Hibernate-Vector module enhancements
Support for binary, float16 and sparse vectors were added.
@Entity
public class MyEntity {
@Id
UUID id;
@JdbcTypeCode(SqlTypes.VECTOR_BINARY)
@Array(length = 24) // Refers to the bit count
byte[] binaryVector;
@JdbcTypeCode(SqlTypes.VECTOR_FLOAT16)
@Array(length = 3)
float[] float16Vector;
@Array(length = 3)
SparseFloatVector sparseFloat32Vector;
}
The Hibernate Vector module currently ships with 3 sparse vector types:
-
SparseByteVector
-
SparseFloatVector
-
SparseDoubleVector
In addition to accessing the sparse indices and values, they also implement the List
interface to provide access
as if it were a dense vector.
Also, support for vectors in the following databases was added: