add discrete headings to section on compositional basic types

This commit is contained in:
Gavin 2023-05-18 12:09:08 +02:00 committed by Christian Beikov
parent 1afafe95c4
commit e846fd88d9
1 changed files with 13 additions and 1 deletions

View File

@ -726,6 +726,7 @@ BitSet bitset;
All this is nice, but it probably won't surprise you that Hibernate goes beyond what is required by JPA. All this is nice, but it probably won't surprise you that Hibernate goes beyond what is required by JPA.
[[compositional-basic-types]]
=== Compositional basic types === Compositional basic types
Hibernate considers a "basic type" to be formed by the marriage of two objects: Hibernate considers a "basic type" to be formed by the marriage of two objects:
@ -733,8 +734,13 @@ Hibernate considers a "basic type" to be formed by the marriage of two objects:
- a `JavaType`, which models the semantics of a certain Java class, and - a `JavaType`, which models the semantics of a certain Java class, and
- a `JdbcType`, representing a SQL type which is understood by JDBC. - a `JdbcType`, representing a SQL type which is understood by JDBC.
When mapping a basic attribute, we may explicitly specify a `JavaType`, a `JdbcType`, or both.
[discrete]
==== JavaType
An instance of `org.hibernate.type.descriptor.java.JavaType` represents a particular Java class. An instance of `org.hibernate.type.descriptor.java.JavaType` represents a particular Java class.
It is able to: It's able to:
- compare instances of the class to determine if an attribute of that class type is dirty (modified), - compare instances of the class to determine if an attribute of that class type is dirty (modified),
- produce a useful hash code for an instance of the class, - produce a useful hash code for an instance of the class,
@ -761,6 +767,9 @@ BitSet bitSet;
Alternatively, the `@JavaTypeRegistration` annotation may be used to register `BitSetJavaType` as the default `JavaType` for `BitSet`. Alternatively, the `@JavaTypeRegistration` annotation may be used to register `BitSetJavaType` as the default `JavaType` for `BitSet`.
[discrete]
==== JdbcType
A `org.hibernate.type.descriptor.jdbc.JdbcType` is able to read and write a single Java type from and to JDBC. A `org.hibernate.type.descriptor.jdbc.JdbcType` is able to read and write a single Java type from and to JDBC.
For example, `VarcharJdbcType` takes care of: For example, `VarcharJdbcType` takes care of:
@ -798,6 +807,9 @@ Since Hibernate understand more SQL types than JDBC, there's an extended list of
For example, `SqlTypes.GEOMETRY` represents the spatial data type `GEOMETRY`. For example, `SqlTypes.GEOMETRY` represents the spatial data type `GEOMETRY`.
**** ****
[discrete]
==== AttributeConverter
If a given `JavaType` doesn't know how to convert its instances to the type required by its partner `JdbcType`, we must help it out by providing a JPA `AttributeConverter` to perform the conversion. If a given `JavaType` doesn't know how to convert its instances to the type required by its partner `JdbcType`, we must help it out by providing a JPA `AttributeConverter` to perform the conversion.
For example, to form a basic type using `LongJavaType` and `TimestampJdbcType`, we would provide an `AttributeConverter<Long,Timestamp>`. For example, to form a basic type using `LongJavaType` and `TimestampJdbcType`, we would provide an `AttributeConverter<Long,Timestamp>`.