Interface CommonBuilder
- All Known Subinterfaces:
CommonSharedBuilder, SessionBuilder, SessionBuilderImplementor, SharedSessionBuilder, SharedSessionBuilderImplementor, SharedStatelessSessionBuilder, StatelessSessionBuilder
- All Known Implementing Classes:
AbstractDelegatingSessionBuilder, AbstractDelegatingSessionBuilderImplementor, AbstractDelegatingSharedSessionBuilder
- Since:
- 7.2
-
Method Summary
Modifier and TypeMethodDescriptionconnection(Connection connection) Adds a specific connection to be used to the session options.connectionHandling(ConnectionAcquisitionMode acquisitionMode, ConnectionReleaseMode releaseMode) Specifies the connection handling modes for the session.initialCacheMode(CacheMode cacheMode) Specify the initialCacheModefor the session.interceptor(Interceptor interceptor) Adds a specific interceptor to the session options.jdbcTimeZone(TimeZone timeZone) Specify the JDBC time zone to use for the session.Specifies that noInterceptorshould be used.Specifies that no session-scoped interceptor should be used for the session.Signifies that no SQL statement inspector should be used.open()Open the session using the specified options.readOnly(boolean readOnly) Specify a read-only mode for the session.statementInspector(UnaryOperator<String> operator) Applies the given statement inspection function to the session.tenantIdentifier(Object tenantIdentifier) Specify the tenant identifier to be associated with the opened session.
-
Method Details
-
open
SharedSessionContract open()Open the session using the specified options. -
connection
Adds a specific connection to be used to the session options.- Parameters:
connection- The connection to use.- Returns:
this, for method chaining
-
connectionHandling
CommonBuilder connectionHandling(ConnectionAcquisitionMode acquisitionMode, ConnectionReleaseMode releaseMode) Specifies the connection handling modes for the session.- Returns:
this, for method chaining- Since:
- 7.0
- API Note:
- If
ConnectionAcquisitionMode.IMMEDIATELYis specified, then the release mode must beConnectionReleaseMode.ON_CLOSE.
-
interceptor
Adds a specific interceptor to the session options.- Parameters:
interceptor- The interceptor to use.- Returns:
this, for method chaining
-
noInterceptor
CommonBuilder noInterceptor()Specifies that noInterceptorshould be used. This indicates to ignore both (if either) the interceptor and session-scoped interceptor associated with theSessionFactory- Returns:
this, for method chaining- API Note:
- Calling
interceptor(Interceptor)withnullhas the same effect
-
noSessionInterceptorCreation
CommonBuilder noSessionInterceptorCreation()Specifies that no session-scoped interceptor should be used for the session. If theSessionFactoryhas a configured interceptor, it will still be used.- Returns:
this, for method chaining- Since:
- 7.2
- See Also:
- API Note:
- Unlike
noInterceptor(), this operation does not disable use of an interceptor associated with theSessionFactory.
-
statementInspector
Applies the given statement inspection function to the session.- Parameters:
operator- An operator which accepts a SQL string, returning a processed SQL string to be used by Hibernate instead. The operator may simply (and usually) return the original SQL.- Returns:
this, for method chaining
-
noStatementInspector
CommonBuilder noStatementInspector()Signifies that no SQL statement inspector should be used.
By default, if no inspector is explicitly specified, the inspector associated with the
SessionFactory, if one, is inherited by the new session.- Returns:
this, for method chaining- API Note:
- Calling
statementInspector(UnaryOperator)withnullhas the same effect.
-
tenantIdentifier
Specify the tenant identifier to be associated with the opened session.
try (var session = sessionFactory.withOptions() .tenantIdentifier(tenantId) .openSession()) { ... }- Parameters:
tenantIdentifier- The tenant identifier.- Returns:
this, for method chaining
-
readOnly
Specify a read-only mode for the session. If a session is created in read-only mode, then
Connection.setReadOnly(boolean)is called when a JDBC connection is obtained.Furthermore, if read/write replication is in use, then:
- a read-only session will connect to a read-only replica, but
- a non-read-only session will connect to a writable replica.
When read/write replication is in use, it's strongly recommended that the session be created with the initial cache-mode set to
CacheMode.GET, to avoid writing stale data read from a read-only replica to the second-level cache. Hibernate cannot possibly guarantee that data read from a read-only replica is up to date.When read/write replication is in use, it's possible that an item read from the second-level cache might refer to data which does not yet exist in the read-only replica. In this situation, an exception occurs when the association is fetched. To completely avoid this possibility, the initial cache-mode must be set to
CacheMode.IGNORE. However, it's also usually possible to structure data access code in a way which eliminates this possibility.try (var readOnlySession = sessionFactory.withOptions() .readOnly(true) .initialCacheMode(CacheMode.IGNORE) .openSession()) { ... }If a session is created in read-only mode, then it cannot be changed to read-write mode, and any call to
Session.setDefaultReadOnly(boolean)with fail. On the other hand, if a session is created in read-write mode, then it may later be switched to read-only mode, but all database access is directed to the writable replica.- Returns:
this, for method chaining- Since:
- 7.2
- See Also:
-
initialCacheMode
Specify the initialCacheModefor the session.- Returns:
this, for method chaining- Since:
- 7.2
- See Also:
-
jdbcTimeZone
Specify the JDBC time zone to use for the session.- Returns:
this, for method chaining
-