HHH-13552 Store the Collection Persister in a field of CollectionType
This commit is contained in:
parent
6510c34e93
commit
80f8f0845c
|
@ -63,6 +63,10 @@ public abstract class CollectionType extends AbstractType implements Association
|
||||||
private final String role;
|
private final String role;
|
||||||
private final String foreignKeyPropertyName;
|
private final String foreignKeyPropertyName;
|
||||||
|
|
||||||
|
// the need for the persister if very hot in many use cases: cache it in a field
|
||||||
|
// TODO initialize it at constructor time
|
||||||
|
private volatile CollectionPersister persister;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use the other contructor
|
* @deprecated Use the other contructor
|
||||||
*/
|
*/
|
||||||
|
@ -319,11 +323,33 @@ public abstract class CollectionType extends AbstractType implements Association
|
||||||
* @return The underlying collection persister
|
* @return The underlying collection persister
|
||||||
*/
|
*/
|
||||||
private CollectionPersister getPersister(SharedSessionContractImplementor session) {
|
private CollectionPersister getPersister(SharedSessionContractImplementor session) {
|
||||||
|
CollectionPersister p = this.persister;
|
||||||
|
if ( p != null ) {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
else {
|
||||||
return getPersister( session.getFactory() );
|
return getPersister( session.getFactory() );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private CollectionPersister getPersister(SessionFactoryImplementor factory) {
|
private CollectionPersister getPersister(SessionFactoryImplementor factory) {
|
||||||
return factory.getMetamodel().collectionPersister( role );
|
CollectionPersister p = this.persister;
|
||||||
|
if ( p != null ) {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
synchronized ( this ) {
|
||||||
|
p = this.persister;
|
||||||
|
if ( p != null ) {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
p = factory.getMetamodel().collectionPersister( role );
|
||||||
|
this.persister = p;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue