HHH-16907 moved if from inside private method to around

This improves performance of cascadeLogicalOneToOneOrphanRemoval
handling, because entity fields are only read by reflection if the field
is actually a 1:1 relation (before the change, this was done every time
for every field)
This commit is contained in:
norbert_wirges 2023-07-11 14:06:18 +02:00 committed by Steve Ebersole
parent 7c378847cb
commit f55c017f59
1 changed files with 85 additions and 86 deletions

View File

@ -174,7 +174,7 @@ public final class Cascade {
);
}
// If the property is uninitialized, then there cannot be any orphans.
if ( action.deleteOrphans() && !isUninitializedProperty ) {
if ( action.deleteOrphans() && !isUninitializedProperty && isLogicalOneToOne( type ) ) {
cascadeLogicalOneToOneOrphanRemoval(
action,
eventSource,
@ -252,7 +252,7 @@ public final class Cascade {
}
}
}
if ( isLogicalOneToOne( type ) ) {
cascadeLogicalOneToOneOrphanRemoval(
action,
eventSource,
@ -264,7 +264,9 @@ public final class Cascade {
propertyName,
isCascadeDeleteEnabled );
}
}
/** potentially we need to handle orphan deletes for one-to-ones here...*/
private static <T> void cascadeLogicalOneToOneOrphanRemoval(
final CascadingAction<T> action,
final EventSource eventSource,
@ -276,8 +278,6 @@ public final class Cascade {
final String propertyName,
final boolean isCascadeDeleteEnabled) throws HibernateException {
// potentially we need to handle orphan deletes for one-to-ones here...
if ( isLogicalOneToOne( type ) ) {
// We have a physical or logical one-to-one. See if the attribute cascade settings and action-type require
// orphan checking
if ( style.hasOrphanDelete() && action.deleteOrphans() ) {
@ -363,7 +363,6 @@ public final class Cascade {
}
}
}
}
/**
* Check if the association is a one to one in the logical model (either a shared-pk