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 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.jdbcTimeZone(TimeZone timeZone) Specify the JDBC time zone to use 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 CommonBuilder
interceptor, noInterceptor, noSessionInterceptorCreation, noStatementInspector, open
-
Method Details
-
openStatelessSession
StatelessSession openStatelessSession()Opens a session with the specified options.- Returns:
- The session
-
connection
Description copied from interface:CommonBuilderAdds a specific connection to be used to the session options.- Specified by:
connectionin interfaceCommonBuilder- Parameters:
connection- The connection to use.- Returns:
this, for method chaining
-
connectionHandling
StatelessSessionBuilder connectionHandling(ConnectionAcquisitionMode acquisitionMode, ConnectionReleaseMode releaseMode) Description copied from interface:CommonBuilderSpecifies the connection handling modes for the session.- Specified by:
connectionHandlingin interfaceCommonBuilder- Returns:
this, for method chaining
-
tenantIdentifier
Description copied from interface:CommonBuilderSpecify the tenant identifier to be associated with the opened session.
try (var session = sessionFactory.withOptions() .tenantIdentifier(tenantId) .openSession()) { ... }- Specified by:
tenantIdentifierin interfaceCommonBuilder- Parameters:
tenantIdentifier- The tenant identifier.- Returns:
this, for method chaining
-
readOnly
Description copied from interface:CommonBuilderSpecify 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.- Specified by:
readOnlyin interfaceCommonBuilder- Returns:
this, for method chaining- See Also:
-
initialCacheMode
Description copied from interface:CommonBuilderSpecify the initialCacheModefor the session.- Specified by:
initialCacheModein interfaceCommonBuilder- Returns:
this, for method chaining- See Also:
-
statementInspector
Description copied from interface:CommonBuilderApplies the given statement inspection function to the session.- Specified by:
statementInspectorin interfaceCommonBuilder- 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
-
jdbcTimeZone
Description copied from interface:CommonBuilderSpecify the JDBC time zone to use for the session.- Specified by:
jdbcTimeZonein 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 typeStatementInspectorand is therefore a layer-breaker. UsestatementInspector(UnaryOperator)instead.Applies the givenStatementInspectorto the session.- Parameters:
statementInspector- TheStatementInspectorto use.- Returns:
this, for method chaining
-
StatementInspectorand is therefore a layer-breaker.