mention @ConcreteProxy and the problem it solves in Introduction doc
Signed-off-by: Gavin King <gavin@hibernate.org>
This commit is contained in:
parent
2850c5ff90
commit
8ab4b177be
|
@ -330,9 +330,15 @@ Now for the gotchas:
|
||||||
|
|
||||||
1. Hibernate will only do this for an entity which is currently associated with a persistence context.
|
1. Hibernate will only do this for an entity which is currently associated with a persistence context.
|
||||||
Once the session ends, and the persistence context is cleaned up, the proxy is no longer fetchable, and instead its methods throw the hated `LazyInitializationException`.
|
Once the session ends, and the persistence context is cleaned up, the proxy is no longer fetchable, and instead its methods throw the hated `LazyInitializationException`.
|
||||||
2. A round trip to the database to fetch the state of a single entity instance is just about _the least efficient_ way to access data.
|
2. For a polymorphic association, Hibernate does not know the concrete type of the referenced entity when the proxy is instantiated, and so operations like `instanceof` and typecasts do not work correctly when applied to a proxy.
|
||||||
|
3. A round trip to the database to fetch the state of a single entity instance is just about _the least efficient_ way to access data.
|
||||||
It almost inevitably leads to the infamous _N+1 selects_ problem we'll discuss later when we talk about how to <<association-fetching,optimize association fetching>>.
|
It almost inevitably leads to the infamous _N+1 selects_ problem we'll discuss later when we talk about how to <<association-fetching,optimize association fetching>>.
|
||||||
|
|
||||||
|
[TIP]
|
||||||
|
====
|
||||||
|
The link:{doc-javadoc-url}org/hibernate/annotations/ConcreteProxy.html[`@ConcreteProxy`] annotation solves gotcha 2, but at the cost of performance (extra joins), and so its use is not generally recommended, except in very special circumstances.
|
||||||
|
====
|
||||||
|
|
||||||
[TIP]
|
[TIP]
|
||||||
// .Strive to avoid triggering lazy fetching
|
// .Strive to avoid triggering lazy fetching
|
||||||
====
|
====
|
||||||
|
|
Loading…
Reference in New Issue