mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-17 00:24:57 +00:00
More work on `@AttributeBinderType
This commit is contained in:
parent
b889375eb6
commit
76c329f919
@ -5,7 +5,13 @@
|
|||||||
:attributeBinderTestDir: {coreProjectDir}/src/test/java/org/hibernate/orm/test/mapping/attributebinder
|
:attributeBinderTestDir: {coreProjectDir}/src/test/java/org/hibernate/orm/test/mapping/attributebinder
|
||||||
:extrasdir: extras
|
:extrasdir: extras
|
||||||
|
|
||||||
`AttributeBinder` is the best thing since sliced bread. Here's why...
|
For cases where Hibernate does not provide a built-in way to configure the domain
|
||||||
|
model mapping based on requirements, it provides a very broad and flexible
|
||||||
|
way to adjust the mapping model through its "boot-time model" (defined in
|
||||||
|
the `org.hibernate.mapping` package) using its `@AttributeBinderType` meta
|
||||||
|
annotation and corresponding `AttributeBinder` contract.
|
||||||
|
|
||||||
|
An example:
|
||||||
|
|
||||||
[[domain-customizing-example]]
|
[[domain-customizing-example]]
|
||||||
.AttributeBinder example
|
.AttributeBinder example
|
||||||
@ -17,3 +23,13 @@ include::{attributeBinderTestDir}/YesNo.java[tag=attribute-binder-example, inden
|
|||||||
include::{attributeBinderTestDir}/YesNoBinder.java[tag=attribute-binder-example, indent=0]
|
include::{attributeBinderTestDir}/YesNoBinder.java[tag=attribute-binder-example, indent=0]
|
||||||
----
|
----
|
||||||
====
|
====
|
||||||
|
|
||||||
|
The important thing to take away here is that both `@YesNo` and `YesNoBinder` are custom, user-written
|
||||||
|
code. Hibernate has no inherent understanding of what a `@YesNo` does or is. It only understands that
|
||||||
|
it has the `@AttributeBinderType` meta-annotation and knows how to apply that through the corresponding
|
||||||
|
`YesNoBinder`.
|
||||||
|
|
||||||
|
Notice also that `@AttributeBinderType` provides a type-safe way to perform configuration because
|
||||||
|
the `AttributeBinder` (`YesNoBinder`) is handed the custom annotation (`@YesNo`) to grab its configured
|
||||||
|
attributes. `@YesNo` does not provide any attributes, but it easily could. Whatever `YesNoBinder`
|
||||||
|
supports.
|
Loading…
x
Reference in New Issue
Block a user