public class DefaultReactiveLoadEventListener extends java.lang.Object implements org.hibernate.event.spi.LoadEventListener, ReactiveLoadEventListener
DefaultLoadEventListener
.
Note that sometimes Hibernate ORM calls SessionImpl.internalLoad(String, Serializable, boolean, boolean)
and LoadEventListener.onLoad(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
.
The CompletionStage
only happens when we query the db and a proxy is not created.
If LoadEventListener.onLoad(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.
Constructor and Description |
---|
DefaultReactiveLoadEventListener() |
Modifier and Type | Method and 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.
|
public void onLoad(org.hibernate.event.spi.LoadEvent event, org.hibernate.event.spi.LoadEventListener.LoadType loadType) throws org.hibernate.HibernateException
In particular, it should be called only by
SessionImpl.internalLoad(String, Serializable, boolean, boolean)
.
onLoad
in interface org.hibernate.event.spi.LoadEventListener
java.lang.UnsupportedOperationException
- if the entity loaded is not a proxyUnexpectedAccessToTheDatabase
- if it needs to load the entity from the dborg.hibernate.HibernateException
LoadEventListener.onLoad(LoadEvent, LoadType)
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
reactiveOnLoad
in interface ReactiveLoadEventListener
event
- The load event to be handled.org.hibernate.HibernateException
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)
event
- The load eventpersister
- The persister for the entity being requested for load