mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-27 22:39:13 +00:00
HHH-16982 Avoid unnecessary registerReloadedEntity calls
This commit is contained in:
parent
7915ad635a
commit
b9e5d3a6bc
@ -37,6 +37,11 @@ public Callback getCallback() {
|
||||
return delegate.getCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return delegate.hasCallbackActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SharedSessionContractImplementor getSession() {
|
||||
return delegate.getSession();
|
||||
|
@ -621,6 +621,11 @@ public Callback getCallback() {
|
||||
return callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return callback != null && callback.hasAfterLoadActions();
|
||||
}
|
||||
|
||||
protected void resetCallback() {
|
||||
callback = null;
|
||||
}
|
||||
|
@ -29,6 +29,11 @@ public interface DomainQueryExecutionContext {
|
||||
*/
|
||||
Callback getCallback();
|
||||
|
||||
default boolean hasCallbackActions() {
|
||||
final Callback callback = getCallback();
|
||||
return callback != null && callback.hasAfterLoadActions();
|
||||
}
|
||||
|
||||
/**
|
||||
* The underlying session
|
||||
*/
|
||||
|
@ -433,6 +433,11 @@ public Callback getCallback() {
|
||||
return callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return callback != null && callback.hasAfterLoadActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryParameterBindings getQueryParameterBindings() {
|
||||
return parameterBindings;
|
||||
|
@ -65,6 +65,11 @@ public Callback getCallback() {
|
||||
return sqmExecutionContext.getCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return sqmExecutionContext.hasCallbackActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasQueryExecutionToBeAddedToStatistics() {
|
||||
return true;
|
||||
|
@ -37,4 +37,9 @@ public void invokeAfterLoadActions(Object entity, EntityMappingType entityMappin
|
||||
afterLoadActions.get( i ).afterLoad( entity, entityMappingType, session );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAfterLoadActions() {
|
||||
return !afterLoadActions.isEmpty();
|
||||
}
|
||||
}
|
||||
|
@ -29,4 +29,9 @@ public void registerAfterLoadAction(AfterLoadAction afterLoadAction) {
|
||||
public void invokeAfterLoadActions(Object entity, EntityMappingType entityMappingType, SharedSessionContractImplementor session) {
|
||||
// don't do anything
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAfterLoadActions() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -798,6 +798,11 @@ public Callback getCallback() {
|
||||
return context.getCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return context.hasCallbackActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getEnabledFetchProfiles() {
|
||||
return null;
|
||||
|
@ -36,4 +36,6 @@ public interface Callback {
|
||||
default void invokeAfterLoadActions(SharedSessionContractImplementor session, Object entity, org.hibernate.persister.entity.Loadable persister) {
|
||||
invokeAfterLoadActions( entity, persister, session );
|
||||
}
|
||||
|
||||
boolean hasAfterLoadActions();
|
||||
}
|
||||
|
@ -36,6 +36,11 @@ default boolean isScrollResult(){
|
||||
|
||||
Callback getCallback();
|
||||
|
||||
default boolean hasCallbackActions() {
|
||||
final Callback callback = getCallback();
|
||||
return callback != null && callback.hasAfterLoadActions();
|
||||
}
|
||||
|
||||
String getQueryIdentifier(String sql);
|
||||
|
||||
/**
|
||||
|
@ -105,6 +105,11 @@ public Callback getCallback() {
|
||||
return processingState.getCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return processingState.hasCallbackActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CollectionKey getCollectionKey() {
|
||||
return processingState.getCollectionKey();
|
||||
|
@ -60,7 +60,6 @@
|
||||
import org.hibernate.sql.results.jdbc.spi.JdbcValuesSourceProcessingState;
|
||||
import org.hibernate.sql.results.jdbc.spi.RowProcessingState;
|
||||
import org.hibernate.stat.spi.StatisticsImplementor;
|
||||
import org.hibernate.type.AssociationType;
|
||||
import org.hibernate.type.Type;
|
||||
|
||||
import static org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer.UNFETCHED_PROPERTY;
|
||||
@ -717,7 +716,7 @@ protected void registerLoadingEntity(RowProcessingState rowProcessingState, Obje
|
||||
}
|
||||
|
||||
protected void registerReloadedEntity(RowProcessingState rowProcessingState, Object instance) {
|
||||
if ( rowProcessingState.getCallback() != null ) {
|
||||
if ( rowProcessingState.hasCallbackActions() ) {
|
||||
// This is only needed for follow-on locking, so skip registering the entity if there is no callback
|
||||
rowProcessingState.getJdbcValuesSourceProcessingState()
|
||||
.registerReloadedEntity(
|
||||
|
@ -153,6 +153,11 @@ public Callback getCallback() {
|
||||
return executionContext.getCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCallbackActions() {
|
||||
return executionContext.hasCallbackActions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CollectionKey getCollectionKey() {
|
||||
return executionContext.getCollectionKey();
|
||||
|
@ -55,6 +55,11 @@ public void registerAfterLoadAction(AfterLoadAction afterLoadAction) {
|
||||
public void invokeAfterLoadActions(Object entity, EntityMappingType entityMappingType, SharedSessionContractImplementor session) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAfterLoadActions() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected SqmSelectStatement<?> interpretSelect(String hql) {
|
||||
return interpretSelect( hql, sessionFactory() );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user