From 2fc907c3c8321000ce2938985586322fc536d2dc Mon Sep 17 00:00:00 2001 From: Gavin King Date: Wed, 23 Oct 2024 00:30:18 +0200 Subject: [PATCH] HHH-18753 SessionFactory.createEntityManager() should return Session Signed-off-by: Gavin King --- .../java/org/hibernate/SessionFactory.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/hibernate-core/src/main/java/org/hibernate/SessionFactory.java b/hibernate-core/src/main/java/org/hibernate/SessionFactory.java index 27ad1fe3266d..95f422e4e7d3 100644 --- a/hibernate-core/src/main/java/org/hibernate/SessionFactory.java +++ b/hibernate-core/src/main/java/org/hibernate/SessionFactory.java @@ -7,11 +7,14 @@ import java.io.Serializable; import java.sql.Connection; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; import javax.naming.Referenceable; +import jakarta.persistence.EntityManager; +import jakarta.persistence.SynchronizationType; import org.hibernate.boot.spi.SessionFactoryOptions; import org.hibernate.engine.spi.FilterDefinition; import org.hibernate.graph.RootGraph; @@ -157,6 +160,8 @@ public interface SessionFactory extends EntityManagerFactory, Referenceable, Ser * * @return The created session. * + * @apiNote This operation is very similar to {@link #createEntityManager()} + * * @throws HibernateException Indicates a problem opening the session; pretty rare here. */ Session openSession() throws HibernateException; @@ -294,6 +299,42 @@ default R fromStatelessTransaction(Function action) { return fromStatelessSession( session -> manageTransaction( session, session.beginTransaction(), action ) ); } + /** + * Create a new {@link Session}. + */ + @Override + Session createEntityManager(); + + /** + * Create a new {@link Session}, with the given + * {@linkplain EntityManager#getProperties properties}. + */ + @Override + Session createEntityManager(Map map); + + /** + * Create a new {@link Session}, with the given + * {@linkplain SynchronizationType synchronization type}. + * + * @throws IllegalStateException if the persistence unit has + * {@linkplain jakarta.persistence.PersistenceUnitTransactionType#RESOURCE_LOCAL + * resource-local} transaction management + */ + @Override + Session createEntityManager(SynchronizationType synchronizationType); + + /** + * Create a new {@link Session}, with the given + * {@linkplain SynchronizationType synchronization type} and + * {@linkplain EntityManager#getProperties properties}. + * + * @throws IllegalStateException if the persistence unit has + * {@linkplain jakarta.persistence.PersistenceUnitTransactionType#RESOURCE_LOCAL + * resource-local} transaction management + */ + @Override + Session createEntityManager(SynchronizationType synchronizationType, Map map); + /** * Retrieve the {@linkplain Statistics statistics} for this factory. *