Class LogicalConnectionManagedImpl
- java.lang.Object
-
- org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor
-
- org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl
-
- All Implemented Interfaces:
LogicalConnection,LogicalConnectionImplementor,PhysicalJdbcTransaction,JdbcResourceTransaction
public class LogicalConnectionManagedImpl extends AbstractLogicalConnectionImplementor
Represents a LogicalConnection where we manage obtaining and releasing the Connection as needed. This implementation does not claim to be threadsafe and is not designed to be used by multiple threads, yet we do apply a limited amount of care to be able to void obscure exceptions when this class is used in the wrong way.
-
-
Field Summary
-
Fields inherited from class org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor
resourceRegistry
-
-
Constructor Summary
Constructors Constructor Description LogicalConnectionManagedImpl(JdbcConnectionAccess jdbcConnectionAccess, JdbcSessionContext jdbcSessionContext, ResourceRegistry resourceRegistry, JdbcServices jdbcServices)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidafterCompletion()voidafterStatement()Notification indicating a JDBC statement has been executed to triggerConnectionReleaseMode.AFTER_STATEMENTreleasing if neededvoidafterTransaction()Notification indicating a transaction has completed to triggerConnectionReleaseMode.AFTER_TRANSACTIONreleasing if neededvoidbeforeTransactionCompletion()Notification indicating a transaction is about to be completed, so to trigger releasing of the connection if needed (ConnectionReleaseMode.BEFORE_TRANSACTION_COMPLETIONis enabled)voidbegin()Begin the resource transactionConnectionclose()Closes the JdbcSession, making it inactive and forcing release of any held resourcesstatic LogicalConnectionManagedImpldeserialize(ObjectInputStream ois, JdbcConnectionAccess jdbcConnectionAccess, JdbcSessionContext jdbcSessionContext)protected booleandoConnectionsFromProviderHaveAutoCommitDisabled()protected ConnectiongetConnectionForTransactionManagement()PhysicalConnectionHandlingModegetConnectionHandlingMode()ConnectiongetPhysicalConnection()Exposes access to the "real" Connection.booleanisOpen()Is this (logical) JDBC Connection still open/active.booleanisPhysicallyConnected()Is this JdbcSession currently physically connected (meaning does it currently hold a JDBC Connection)?ConnectionmanualDisconnect()Manually disconnect the underlying JDBC Connection.voidmanualReconnect(Connection suppliedConnection)Manually reconnect the underlying JDBC Connection.voidserialize(ObjectOutputStream oos)Serialization hook-
Methods inherited from class org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor
commit, determineInitialAutoCommitMode, errorIfClosed, getPhysicalJdbcTransaction, getResourceRegistry, getStatus, resetConnection, rollback
-
-
-
-
Constructor Detail
-
LogicalConnectionManagedImpl
public LogicalConnectionManagedImpl(JdbcConnectionAccess jdbcConnectionAccess, JdbcSessionContext jdbcSessionContext, ResourceRegistry resourceRegistry, JdbcServices jdbcServices)
-
-
Method Detail
-
isOpen
public boolean isOpen()
Description copied from interface:LogicalConnectionIs this (logical) JDBC Connection still open/active. In other words, hasLogicalConnection.close()not been called yet?- Returns:
trueif still open (LogicalConnection.close()has not been called yet);falseif not open (LogicalConnection.close()has been called).
-
getConnectionHandlingMode
public PhysicalConnectionHandlingMode getConnectionHandlingMode()
-
isPhysicallyConnected
public boolean isPhysicallyConnected()
Description copied from interface:LogicalConnectionIs this JdbcSession currently physically connected (meaning does it currently hold a JDBC Connection)?- Returns:
trueif the JdbcSession currently hold a JDBC Connection;falseif it does not.
-
getPhysicalConnection
public Connection getPhysicalConnection()
Description copied from interface:LogicalConnectionImplementorExposes access to the "real" Connection.- Returns:
- The connection
-
afterStatement
public void afterStatement()
Description copied from interface:LogicalConnectionImplementorNotification indicating a JDBC statement has been executed to triggerConnectionReleaseMode.AFTER_STATEMENTreleasing if needed- Specified by:
afterStatementin interfaceLogicalConnectionImplementor- Overrides:
afterStatementin classAbstractLogicalConnectionImplementor
-
beforeTransactionCompletion
public void beforeTransactionCompletion()
Description copied from interface:LogicalConnectionImplementorNotification indicating a transaction is about to be completed, so to trigger releasing of the connection if needed (ConnectionReleaseMode.BEFORE_TRANSACTION_COMPLETIONis enabled)- Specified by:
beforeTransactionCompletionin interfaceLogicalConnectionImplementor- Overrides:
beforeTransactionCompletionin classAbstractLogicalConnectionImplementor
-
afterTransaction
public void afterTransaction()
Description copied from interface:LogicalConnectionImplementorNotification indicating a transaction has completed to triggerConnectionReleaseMode.AFTER_TRANSACTIONreleasing if needed- Specified by:
afterTransactionin interfaceLogicalConnectionImplementor- Overrides:
afterTransactionin classAbstractLogicalConnectionImplementor
-
manualDisconnect
public Connection manualDisconnect()
Description copied from interface:LogicalConnectionImplementorManually disconnect the underlying JDBC Connection. The assumption here is that the manager will be reconnected at a later point in time.- Returns:
- The connection maintained here at time of disconnect.
nullif there was no connection cached internally.
-
manualReconnect
public void manualReconnect(Connection suppliedConnection)
Description copied from interface:LogicalConnectionImplementorManually reconnect the underlying JDBC Connection. Should be called at some point after manualDisconnect().- Parameters:
suppliedConnection- For user supplied connection strategy the user needs to hand us the connection with which to reconnect. It is an error to pass a connection in the other strategies.
-
serialize
public void serialize(ObjectOutputStream oos) throws IOException
Description copied from interface:LogicalConnectionImplementorSerialization hook- Parameters:
oos- The stream to write out state to- Throws:
IOException- Problem accessing stream
-
deserialize
public static LogicalConnectionManagedImpl deserialize(ObjectInputStream ois, JdbcConnectionAccess jdbcConnectionAccess, JdbcSessionContext jdbcSessionContext) throws IOException
- Throws:
IOException
-
close
public Connection close()
Description copied from interface:LogicalConnectionCloses the JdbcSession, making it inactive and forcing release of any held resources- Returns:
- Legacy :( Returns the JDBC Connection *if* the user passed in a Connection originally.
-
getConnectionForTransactionManagement
protected Connection getConnectionForTransactionManagement()
- Specified by:
getConnectionForTransactionManagementin classAbstractLogicalConnectionImplementor
-
begin
public void begin()
Description copied from interface:JdbcResourceTransactionBegin the resource transaction- Specified by:
beginin interfaceJdbcResourceTransaction- Overrides:
beginin classAbstractLogicalConnectionImplementor
-
afterCompletion
protected void afterCompletion()
- Overrides:
afterCompletionin classAbstractLogicalConnectionImplementor
-
doConnectionsFromProviderHaveAutoCommitDisabled
protected boolean doConnectionsFromProviderHaveAutoCommitDisabled()
- Overrides:
doConnectionsFromProviderHaveAutoCommitDisabledin classAbstractLogicalConnectionImplementor
-
-