Interface StatelessSessionBuilder
- All Superinterfaces:
CommonBuilder
- All Known Subinterfaces:
SharedStatelessSessionBuilder
StatelessSession
with specific options
overriding the defaults from the SessionFactory
.- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionconnection
(Connection connection) Adds a specific connection to the session options.connectionHandling
(ConnectionAcquisitionMode acquisitionMode, ConnectionReleaseMode releaseMode) Specifies the connection handling modes for the session.initialCacheMode
(CacheMode cacheMode) Specify the initialCacheMode
for the session.jdbcTimeZone
(TimeZone timeZone) Specify the JDBC time zone for the session.Opens a session with 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.statementInspector
(StatementInspector statementInspector) Deprecated.tenantIdentifier
(Object tenantIdentifier) Specify the tenant identifier to be associated with the opened session.tenantIdentifier
(String tenantIdentifier) Deprecated, for removal: This API element is subject to removal in a future version.UsetenantIdentifier(Object)
insteadMethods inherited from interface org.hibernate.engine.creation.CommonBuilder
interceptor, noInterceptor, noSessionInterceptorCreation, noStatementInspector
-
Method Details
-
openStatelessSession
StatelessSession openStatelessSession()Opens a session with the specified options.- Returns:
- The session
-
connection
Description copied from interface:CommonBuilder
Adds a specific connection to the session options.- Specified by:
connection
in interfaceCommonBuilder
- Parameters:
connection
- The connection to use.- Returns:
this
, for method chaining
-
connectionHandling
StatelessSessionBuilder connectionHandling(ConnectionAcquisitionMode acquisitionMode, ConnectionReleaseMode releaseMode) Description copied from interface:CommonBuilder
Specifies the connection handling modes for the session.Note that if
ConnectionAcquisitionMode.IMMEDIATELY
is specified, then the release mode must beConnectionReleaseMode.ON_CLOSE
.- Specified by:
connectionHandling
in interfaceCommonBuilder
- Returns:
this
, for method chaining
-
tenantIdentifier
Description copied from interface:CommonBuilder
Specify the tenant identifier to be associated with the opened session.try (var session = sessionFactory.withOptions() .tenantIdentifier(tenantId) .openSession()) { ... }
- Specified by:
tenantIdentifier
in interfaceCommonBuilder
- Parameters:
tenantIdentifier
- The tenant identifier.- Returns:
this
, for method chaining
-
readOnly
Description copied from interface:CommonBuilder
Specify a read-only mode for the session. If a session is created in read-only mode, thenConnection.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.- Specified by:
readOnly
in interfaceCommonBuilder
- Returns:
this
, for method chaining- See Also:
-
initialCacheMode
Description copied from interface:CommonBuilder
Specify the initialCacheMode
for the session.- Specified by:
initialCacheMode
in interfaceCommonBuilder
- Returns:
this
, for method chaining- See Also:
-
statementInspector
Description copied from interface:CommonBuilder
Applies the given statement inspection function to the session.- Specified by:
statementInspector
in interfaceCommonBuilder
- Parameters:
operator
- An operator which accepts a SQL string, returning a processed SQL string to be used by Hibernate instead of the given original SQL. The operator may simply return the original SQL.- Returns:
this
, for method chaining
-
jdbcTimeZone
Description copied from interface:CommonBuilder
Specify the JDBC time zone for the session.- Specified by:
jdbcTimeZone
in interfaceCommonBuilder
- Returns:
this
, for method chaining
-
tenantIdentifier
@Deprecated(since="6.4", forRemoval=true) StatelessSessionBuilder tenantIdentifier(String tenantIdentifier) Deprecated, for removal: This API element is subject to removal in a future version.UsetenantIdentifier(Object)
insteadDefine the tenant identifier to be associated with the opened session.- Parameters:
tenantIdentifier
- The tenant identifier.- Returns:
this
, for method chaining
-
statementInspector
@Deprecated(since="7.0") StatelessSessionBuilder statementInspector(StatementInspector statementInspector) Deprecated.This operation exposes the SPI typeStatementInspector
and is therefore a layer-breaker. UsestatementInspector(UnaryOperator)
instead.Applies the givenStatementInspector
to the session.- Parameters:
statementInspector
- TheStatementInspector
to use.- Returns:
this
, for method chaining
-
StatementInspector
and is therefore a layer-breaker.