Skip to content

Commit c8b68f5

Browse files
committed
HHH-10302 Extract helper method for LoadEvent reuse and adapt code formatting to Hibernate style
1 parent a761705 commit c8b68f5

File tree

2 files changed

+44
-44
lines changed

2 files changed

+44
-44
lines changed

hibernate-core/src/main/java/org/hibernate/event/spi/LoadEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ else if ( lockOptions.getLockMode() == null ) {
105105
this.instanceToLoad = instanceToLoad;
106106
this.lockOptions = lockOptions;
107107
this.isAssociationFetch = isAssociationFetch;
108-
this.postLoadEvent = new PostLoadEvent(source);
108+
this.postLoadEvent = new PostLoadEvent( source );
109109
}
110110

111111
public Serializable getEntityId() {

hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -939,22 +939,22 @@ private void fireDelete(DeleteEvent event, Set transientEntities) {
939939
public void load(Object object, Serializable id) throws HibernateException {
940940
LoadEvent event = loadEvent;
941941
loadEvent = null;
942-
if(event == null) {
942+
if ( event == null ) {
943943
event = new LoadEvent( id, object, this );
944944
} else {
945-
event.setEntityClassName(null);
946-
event.setEntityId(id);
947-
event.setInstanceToLoad(object);
948-
event.setLockMode(LoadEvent.DEFAULT_LOCK_MODE);
949-
event.setLockScope(LoadEvent.DEFAULT_LOCK_OPTIONS.getScope());
950-
event.setLockTimeout(LoadEvent.DEFAULT_LOCK_OPTIONS.getTimeOut());
945+
event.setEntityClassName( null );
946+
event.setEntityId( id );
947+
event.setInstanceToLoad( object );
948+
event.setLockMode( LoadEvent.DEFAULT_LOCK_MODE );
949+
event.setLockScope( LoadEvent.DEFAULT_LOCK_OPTIONS.getScope() );
950+
event.setLockTimeout( LoadEvent.DEFAULT_LOCK_OPTIONS.getTimeOut() );
951951
}
952952
fireLoad( event, LoadEventListener.RELOAD );
953-
if(loadEvent == null) {
954-
event.setEntityClassName(null);
955-
event.setEntityId(null);
956-
event.setInstanceToLoad(null);
957-
event.setResult(null);
953+
if ( loadEvent == null ) {
954+
event.setEntityClassName( null );
955+
event.setEntityId( null );
956+
event.setInstanceToLoad( null );
957+
event.setResult( null );
958958
loadEvent = event;
959959
}
960960
}
@@ -992,23 +992,14 @@ public Object immediateLoad(String entityName, Serializable id) throws Hibernate
992992
}
993993
LoadEvent event = loadEvent;
994994
loadEvent = null;
995-
if(event == null) {
996-
event = new LoadEvent( id, entityName, true, this );
997-
} else {
998-
event.setEntityClassName(entityName);
999-
event.setEntityId(id);
1000-
event.setInstanceToLoad(null);
1001-
event.setLockMode(LoadEvent.DEFAULT_LOCK_MODE);
1002-
event.setLockScope(LoadEvent.DEFAULT_LOCK_OPTIONS.getScope());
1003-
event.setLockTimeout(LoadEvent.DEFAULT_LOCK_OPTIONS.getTimeOut());
1004-
}
995+
event = recycleEventInstance( event, id, entityName );
1005996
fireLoad( event, LoadEventListener.IMMEDIATE_LOAD );
1006997
Object result = event.getResult();
1007-
if(loadEvent == null) {
1008-
event.setEntityClassName(null);
1009-
event.setEntityId(null);
1010-
event.setInstanceToLoad(null);
1011-
event.setResult(null);
998+
if ( loadEvent == null ) {
999+
event.setEntityClassName( null );
1000+
event.setEntityId( null );
1001+
event.setInstanceToLoad( null );
1002+
event.setResult( null );
10121003
loadEvent = event;
10131004
}
10141005
return result;
@@ -1026,31 +1017,40 @@ public Object internalLoad(String entityName, Serializable id, boolean eager, bo
10261017

10271018
LoadEvent event = loadEvent;
10281019
loadEvent = null;
1029-
if(event == null) {
1030-
event = new LoadEvent( id, entityName, true, this );
1031-
} else {
1032-
event.setEntityClassName(entityName);
1033-
event.setEntityId(id);
1034-
event.setInstanceToLoad(null);
1035-
event.setLockMode(LoadEvent.DEFAULT_LOCK_MODE);
1036-
event.setLockScope(LoadEvent.DEFAULT_LOCK_OPTIONS.getScope());
1037-
event.setLockTimeout(LoadEvent.DEFAULT_LOCK_OPTIONS.getTimeOut());
1038-
}
1020+
event = recycleEventInstance( event, id, entityName );
10391021
fireLoad( event, type );
10401022
Object result = event.getResult();
10411023
if ( !nullable ) {
1042-
UnresolvableObjectException.throwIfNull(result, id, entityName );
1024+
UnresolvableObjectException.throwIfNull( result, id, entityName );
10431025
}
1044-
if(loadEvent == null) {
1045-
event.setEntityClassName(null);
1046-
event.setEntityId(null);
1047-
event.setInstanceToLoad(null);
1048-
event.setResult(null);
1026+
if ( loadEvent == null ) {
1027+
event.setEntityClassName( null );
1028+
event.setEntityId( null );
1029+
event.setInstanceToLoad( null );
1030+
event.setResult( null );
10491031
loadEvent = event;
10501032
}
10511033
return result;
10521034
}
10531035

1036+
/**
1037+
* Helper to avoid creating many new instances of LoadEvent: it's an allocation hot spot.
1038+
*/
1039+
private LoadEvent recycleEventInstance(final LoadEvent event, final Serializable id, final String entityName) {
1040+
if ( event == null ) {
1041+
return new LoadEvent( id, entityName, true, this );
1042+
}
1043+
else {
1044+
event.setEntityClassName( entityName );
1045+
event.setEntityId( id );
1046+
event.setInstanceToLoad( null );
1047+
event.setLockMode( LoadEvent.DEFAULT_LOCK_MODE );
1048+
event.setLockScope( LoadEvent.DEFAULT_LOCK_OPTIONS.getScope() );
1049+
event.setLockTimeout( LoadEvent.DEFAULT_LOCK_OPTIONS.getTimeOut() );
1050+
return event;
1051+
}
1052+
}
1053+
10541054
@Override
10551055
public <T> T load(Class<T> entityClass, Serializable id, LockMode lockMode) throws HibernateException {
10561056
return this.byId( entityClass ).with( new LockOptions( lockMode ) ).getReference( id );

0 commit comments

Comments
 (0)