Class DefaultReactiveLoadEventListener
- java.lang.Object
-
- org.hibernate.reactive.event.impl.DefaultReactiveLoadEventListener
-
- All Implemented Interfaces:
java.io.Serializable
,org.hibernate.event.spi.LoadEventListener
,ReactiveLoadEventListener
public class DefaultReactiveLoadEventListener extends java.lang.Object implements org.hibernate.event.spi.LoadEventListener, ReactiveLoadEventListener
A reactiveDefaultLoadEventListener
.Note that sometimes Hibernate ORM calls
SessionImpl.internalLoad(String, Object, boolean, boolean)
andonLoad(LoadEvent, LoadType)
is called. We only support this case when loading generates a proxy.The return value of the private methods loading the entity is a proxy or a
CompletionStage
. TheCompletionStage
only happens when we query the db and a proxy is not created. IfonLoad(LoadEvent, LoadType)
is called, we cannot get the entity loaded from the db without blocking the request and therefore we aren't going to support this case for now.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DefaultReactiveLoadEventListener()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.hibernate.persister.entity.EntityPersister
getPersister(org.hibernate.event.spi.LoadEvent event)
protected java.util.concurrent.CompletionStage<java.lang.Object>
loadFromDatasource(org.hibernate.event.spi.LoadEvent event, org.hibernate.persister.entity.EntityPersister persister)
Performs the process of loading an entity from the configured underlying datasource.void
onLoad(org.hibernate.event.spi.LoadEvent event, org.hibernate.event.spi.LoadEventListener.LoadType loadType)
This method is not reactive, but we expect it to be called only when a proxy can be returned.java.util.concurrent.CompletionStage<java.lang.Void>
reactiveOnLoad(org.hibernate.event.spi.LoadEvent event, org.hibernate.event.spi.LoadEventListener.LoadType loadType)
Handle the given load event.
-
-
-
Method Detail
-
onLoad
public void onLoad(org.hibernate.event.spi.LoadEvent event, org.hibernate.event.spi.LoadEventListener.LoadType loadType) throws org.hibernate.HibernateException
This method is not reactive, but we expect it to be called only when a proxy can be returned.In particular, it should be called only by
SessionImpl.internalLoad(String, Object, boolean, boolean)
.- Specified by:
onLoad
in interfaceorg.hibernate.event.spi.LoadEventListener
- Throws:
java.lang.UnsupportedOperationException
- if the entity loaded is not a proxyUnexpectedAccessToTheDatabase
- if it needs to load the entity from the dborg.hibernate.HibernateException
- See Also:
DefaultLoadEventListener.onLoad(LoadEvent, LoadType)
-
reactiveOnLoad
public java.util.concurrent.CompletionStage<java.lang.Void> reactiveOnLoad(org.hibernate.event.spi.LoadEvent event, org.hibernate.event.spi.LoadEventListener.LoadType loadType) throws org.hibernate.HibernateException
Handle the given load event.- Specified by:
reactiveOnLoad
in interfaceReactiveLoadEventListener
- Parameters:
event
- The load event to be handled.- Throws:
org.hibernate.HibernateException
-
getPersister
protected org.hibernate.persister.entity.EntityPersister getPersister(org.hibernate.event.spi.LoadEvent event)
-
loadFromDatasource
protected java.util.concurrent.CompletionStage<java.lang.Object> loadFromDatasource(org.hibernate.event.spi.LoadEvent event, org.hibernate.persister.entity.EntityPersister persister)
Performs the process of loading an entity from the configured underlying datasource.- Parameters:
event
- The load eventpersister
- The persister for the entity being requested for load- Returns:
- The object loaded from the datasource, or null if not found.
-
-