Top Description Fields Constructors Methods
org.hibernate.engine.jdbc.internal

public Class JdbcCoordinatorImpl

extends Object
implements JdbcCoordinator
Class Inheritance
All Implemented Interfaces
org.hibernate.engine.jdbc.spi.JdbcCoordinator, org.hibernate.resource.transaction.backend.jdbc.spi.JdbcResourceTransactionAccess, org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner, java.io.Serializable
Imports
java.io.IOException, .ObjectInputStream, .ObjectOutputStream, java.sql.Connection, .ResultSet, .SQLException, .Statement, java.util.Collections, .HashMap, .HashSet, .Map, .Set, org.hibernate.ConnectionReleaseMode, .HibernateException, .TransactionException, org.hibernate.engine.jdbc.batch.spi.Batch, .BatchBuilder, .BatchKey, org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess, org.hibernate.engine.jdbc.spi.InvalidatableWrapper, .JdbcCoordinator, .JdbcServices, .JdbcWrapper, .ResultSetReturn, .SqlExceptionHelper, .StatementPreparer, org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.internal.CoreLogging, .CoreMessageLogger, org.hibernate.jdbc.WorkExecutor, .WorkExecutorVisitable, org.hibernate.resource.jdbc.ResourceRegistry, org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl, .LogicalConnectionProvidedImpl, .ResourceRegistryStandardImpl, org.hibernate.resource.jdbc.spi.JdbcSessionOwner, .LogicalConnectionImplementor, org.hibernate.resource.transaction.backend.jdbc.spi.JdbcResourceTransaction

Standard Hibernate implementation of JdbcCoordinator

IMPL NOTE : Custom serialization handling!

Authors
Steve Ebersole, Brett Meyer, Sanne Grinovero

Field Summary

Modifier and TypeField and Description
private transient Batch
private int
private final boolean
private transient JdbcServices
private Statement
private static final CoreMessageLogger
private transient LogicalConnectionImplementor
private transient JdbcSessionOwner
private boolean
releasesEnabled

If true, manually (and temporarily) circumvent aggressive release processing.

private transient ResultSetReturn
private transient StatementPreparer
private transient long

Constructor Summary

AccessConstructor and Description
public
JdbcCoordinatorImpl(Connection
The user supplied connection (may be null)
userSuppliedConnection
,
JdbcSessionOwner owner, JdbcServices jdbcServices)

Constructs a JdbcCoordinatorImpl

private
JdbcCoordinatorImpl(LogicalConnectionImplementor logicalConnection, boolean isUserSuppliedConnection, JdbcSessionOwner owner)

Method Summary

Modifier and TypeMethod and Description
public void
abortBatch()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.abortBatch.

Abort the currently managed batch (if any)
public void
afterStatementExecution()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.afterStatementExecution.

Used to signify that a statement has completed execution which may indicate that this logical connection need to perform an aggressive release of its physical connection.
public void
public void
afterTransactionBegin()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.afterTransactionBegin.

A after-begin callback from the coordinator to its owner.
public void
afterTransactionCompletion(boolean
Was the transaction successful?
successful
,
boolean
Is this delayed after transaction completion call (aka after a timeout)?
delayed
)

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.afterTransactionCompletion.

An after-completion callback from the coordinator to its owner.
protected BatchBuilder
public void
public void
cancelLastQuery()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.cancelLastQuery.

Attempt to cancel the last query sent to the JDBC driver.
public Connection
close()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.close.

Close this coordinator and release and resources.
protected void
close(Statement statement)

protected void
close(ResultSet resultSet)

public <T> T
coordinateWork(WorkExecutorVisitable<T>
The work to be performed.
work
)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.coordinateWork.

Perform the requested work handling exceptions, coordinating and handling return processing.
public static JdbcCoordinatorImpl

Returns:

The deserialized JdbcCoordinatorImpl
deserialize
(ObjectInputStream
The stream into which to write our state
ois
,
JdbcSessionOwner
The Jdbc Session owner which owns the JdbcCoordinatorImpl to be deserialized.
owner
)

JDK deserialization hook

private ConnectionReleaseMode
determineConnectionReleaseMode(JdbcConnectionAccess jdbcConnectionAccess, boolean isUserSuppliedConnection, ConnectionReleaseMode connectionReleaseMode)

public int
determineRemainingTransactionTimeOutPeriod()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.determineRemainingTransactionTimeOutPeriod.

Calculate the amount of time, in seconds, still remaining before transaction timeout occurs.
public void
public void
public void
executeBatch()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.executeBatch.

Execute the currently managed batch (if any)
public void
public void
flushBeginning()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.flushBeginning.

Callback to let us know that a flush is beginning.
public void
flushEnding()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.flushEnding.

Callback to let us know that a flush is ending.
public Batch
getBatch(BatchKey
The unique batch key.
key
)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getBatch.

Get a batch instance.
public JdbcSessionOwner
public LogicalConnectionImplementor
getLogicalConnection()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getLogicalConnection.

Retrieves the logical connection associated with this JDBC coordinator.
public JdbcResourceTransaction
getResourceLocalTransaction()

Implements org.hibernate.resource.transaction.backend.jdbc.spi.JdbcResourceTransactionAccess.getResourceLocalTransaction.

Provides access to the resource local transaction of this data store, which is used by the TransactionCoordinator to manage transactions against the data store when not using JTA.
public ResultSetReturn
getResultSetReturn()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getResultSetReturn.

Obtain the resultset extractor associated with this JDBC coordinator.
public StatementPreparer
getStatementPreparer()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getStatementPreparer.

Obtain the statement preparer associated with this JDBC coordinator.
private boolean
public boolean
isActive()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.isActive.

Is the TransactionCoordinator owner considered active?
public boolean
public void
registerLastQuery(Statement
The cancel-able query statement.
statement
)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.registerLastQuery.

Register a query statement as being able to be cancelled.
private void
public void
serialize(ObjectOutputStream
The stream into which to write our state
oos
)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.serialize.

JDK serialization hook
protected SessionFactoryImplementor
sessionFactory()

Deprecated as a consequence of SessionFactoryImplementor being deprecated.
public void
setTransactionTimeOut(int
The number of seconds before a time out should occur.
seconds
)

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.setTransactionTimeOut.

Set the effective transaction timeout period for the current transaction, in seconds.
public SqlExceptionHelper

Returns:

The SqlExceptionHelper
sqlExceptionHelper
()

Access to the SqlExceptionHelper

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

currentBatchback to summary
private transient Batch currentBatch
flushDepthback to summary
private int flushDepth
isUserSuppliedConnectionback to summary
private final boolean isUserSuppliedConnection
jdbcServicesback to summary
private transient JdbcServices jdbcServices
lastQueryback to summary
private Statement lastQuery
LOGback to summary
private static final CoreMessageLogger LOG
logicalConnectionback to summary
private transient LogicalConnectionImplementor logicalConnection
ownerback to summary
private transient JdbcSessionOwner owner
releasesEnabledback to summary
private boolean releasesEnabled

If true, manually (and temporarily) circumvent aggressive release processing.

resultSetExtractorback to summary
private transient ResultSetReturn resultSetExtractor
statementPreparerback to summary
private transient StatementPreparer statementPreparer
transactionTimeOutInstantback to summary
private transient long transactionTimeOutInstant

Constructor Detail

JdbcCoordinatorImplback to summary
public JdbcCoordinatorImpl(Connection userSuppliedConnection, JdbcSessionOwner owner, JdbcServices jdbcServices)

Constructs a JdbcCoordinatorImpl

Parameters
userSuppliedConnection:Connection

The user supplied connection (may be null)

JdbcCoordinatorImplback to summary
private JdbcCoordinatorImpl(LogicalConnectionImplementor logicalConnection, boolean isUserSuppliedConnection, JdbcSessionOwner owner)

Method Detail

abortBatchback to summary
public void abortBatch()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.abortBatch.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.abortBatch.

Abort the currently managed batch (if any)

Annotations
@Override
afterStatementExecutionback to summary
public void afterStatementExecution()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.afterStatementExecution.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.afterStatementExecution.

Used to signify that a statement has completed execution which may indicate that this logical connection need to perform an aggressive release of its physical connection.

Annotations
@Override
afterTransactionback to summary
public void afterTransaction()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.afterTransaction.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.afterTransaction.

Signals the end of transaction.

Intended for use from the transaction coordinator, after local transaction completion. Used to conditionally release the JDBC connection aggressively if the configured release mode indicates.

Annotations
@Override
afterTransactionBeginback to summary
public void afterTransactionBegin()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.afterTransactionBegin.

Doc from org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.afterTransactionBegin.

A after-begin callback from the coordinator to its owner.

Annotations
@Override
afterTransactionCompletionback to summary
public void afterTransactionCompletion(boolean successful, boolean delayed)

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.afterTransactionCompletion.

Doc from org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.afterTransactionCompletion.

An after-completion callback from the coordinator to its owner.

Parameters
successful:boolean

Was the transaction successful?

delayed:boolean

Is this delayed after transaction completion call (aka after a timeout)?

Annotations
@Override
batchBuilderback to summary
protected BatchBuilder batchBuilder()
beforeTransactionCompletionback to summary
public void beforeTransactionCompletion()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.beforeTransactionCompletion.

Doc from org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.beforeTransactionCompletion.

A before-completion callback from the coordinator to its owner.

Annotations
@Override
cancelLastQueryback to summary
public void cancelLastQuery()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.cancelLastQuery.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.cancelLastQuery.

Attempt to cancel the last query sent to the JDBC driver.

Annotations
@Override
closeback to summary
public Connection close()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.close.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.close.

Close this coordinator and release and resources.

Returns:Connection

The Connection associated with the managed logical connection

Annotations
@Override
closeback to summary
protected void close(Statement statement)
Annotations
@SuppressWarnings:unchecked
closeback to summary
protected void close(ResultSet resultSet)
Annotations
@SuppressWarnings:unchecked
coordinateWorkback to summary
public <T> T coordinateWork(WorkExecutorVisitable<T> work)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.coordinateWork.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.coordinateWork.

Perform the requested work handling exceptions, coordinating and handling return processing.

Parameters
<T>
The result type.
work:WorkExecutorVisitable<T>

The work to be performed.

Returns:T

The work result.

Annotations
@Override
deserializeback to summary
public static JdbcCoordinatorImpl deserialize(ObjectInputStream ois, JdbcSessionOwner owner) throws IOException, ClassNotFoundException

JDK deserialization hook

Parameters
ois:ObjectInputStream

The stream into which to write our state

owner:JdbcSessionOwner

The Jdbc Session owner which owns the JdbcCoordinatorImpl to be deserialized.

Returns:JdbcCoordinatorImpl

The deserialized JdbcCoordinatorImpl

Exceptions
IOException:
Trouble accessing the stream
ClassNotFoundException:
Trouble reading the stream
determineConnectionReleaseModeback to summary
private ConnectionReleaseMode determineConnectionReleaseMode(JdbcConnectionAccess jdbcConnectionAccess, boolean isUserSuppliedConnection, ConnectionReleaseMode connectionReleaseMode)
determineRemainingTransactionTimeOutPeriodback to summary
public int determineRemainingTransactionTimeOutPeriod()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.determineRemainingTransactionTimeOutPeriod.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.determineRemainingTransactionTimeOutPeriod.

Calculate the amount of time, in seconds, still remaining before transaction timeout occurs.

Returns:int

The number of seconds remaining until until a transaction timeout occurs. A negative value indicates no timeout was requested.

Annotations
@Override
disableReleasesback to summary
public void disableReleases()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.disableReleases.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.disableReleases.

Disable connection releases

Annotations
@Override
enableReleasesback to summary
public void enableReleases()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.enableReleases.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.enableReleases.

Enable connection releases

Annotations
@Override
executeBatchback to summary
public void executeBatch()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.executeBatch.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.executeBatch.

Execute the currently managed batch (if any)

Annotations
@Override
flushBeforeTransactionCompletionback to summary
public void flushBeforeTransactionCompletion()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.flushBeforeTransactionCompletion.

Annotations
@Override
flushBeginningback to summary
public void flushBeginning()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.flushBeginning.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.flushBeginning.

Callback to let us know that a flush is beginning. We use this fact to temporarily circumvent aggressive connection releasing until after the flush cycle is complete flushEnding()

Annotations
@Override
flushEndingback to summary
public void flushEnding()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.flushEnding.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.flushEnding.

Callback to let us know that a flush is ending. We use this fact to stop circumventing aggressive releasing connections.

Annotations
@Override
getBatchback to summary
public Batch getBatch(BatchKey key)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getBatch.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.getBatch.

Get a batch instance.

Parameters
key:BatchKey

The unique batch key.

Returns:Batch

The batch

Annotations
@Override
getJdbcSessionOwnerback to summary
public JdbcSessionOwner getJdbcSessionOwner()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.getJdbcSessionOwner.

Annotations
@Override
getLogicalConnectionback to summary
public LogicalConnectionImplementor getLogicalConnection()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getLogicalConnection.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.getLogicalConnection.

Retrieves the logical connection associated with this JDBC coordinator.

Returns:LogicalConnectionImplementor

The logical connection

Annotations
@Override
getResourceLocalTransactionback to summary
public JdbcResourceTransaction getResourceLocalTransaction()

Implements org.hibernate.resource.transaction.backend.jdbc.spi.JdbcResourceTransactionAccess.getResourceLocalTransaction.

Doc from org.hibernate.resource.transaction.backend.jdbc.spi.JdbcResourceTransactionAccess.getResourceLocalTransaction.

Provides access to the resource local transaction of this data store, which is used by the TransactionCoordinator to manage transactions against the data store when not using JTA.

Returns:JdbcResourceTransaction

The resource-local transaction

Annotations
@Override
getResultSetReturnback to summary
public ResultSetReturn getResultSetReturn()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getResultSetReturn.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.getResultSetReturn.

Obtain the resultset extractor associated with this JDBC coordinator.

Returns:ResultSetReturn

This coordinator's resultset extractor

Annotations
@Override
getStatementPreparerback to summary
public StatementPreparer getStatementPreparer()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.getStatementPreparer.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.getStatementPreparer.

Obtain the statement preparer associated with this JDBC coordinator.

Returns:StatementPreparer

This coordinator's statement preparer

Annotations
@Override
hasRegisteredResourcesback to summary
private boolean hasRegisteredResources()
isActiveback to summary
public boolean isActive()

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.isActive.

Doc from org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.isActive.

Is the TransactionCoordinator owner considered active?

Returns:boolean

true indicates the owner is still active; false indicates it is not.

Annotations
@Override
isReadyForSerializationback to summary
public boolean isReadyForSerialization()

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.isReadyForSerialization.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.isReadyForSerialization.

Can this coordinator be serialized?

Returns:boolean

true indicates the coordinator can be serialized.

Annotations
@Override
registerLastQueryback to summary
public void registerLastQuery(Statement statement)

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.registerLastQuery.

Doc from org.hibernate.engine.jdbc.spi.JdbcCoordinator.registerLastQuery.

Register a query statement as being able to be cancelled.

Parameters
statement:Statement

The cancel-able query statement.

Annotations
@Override
@SuppressWarnings:unchecked
releaseResourcesback to summary
private void releaseResources()
serializeback to summary
public void serialize(ObjectOutputStream oos) throws IOException

Implements org.hibernate.engine.jdbc.spi.JdbcCoordinator.serialize.

JDK serialization hook

Parameters
oos:ObjectOutputStream

The stream into which to write our state

Annotations
@Override
Exceptions
IOException:
Trouble accessing the stream
sessionFactoryback to summary
protected SessionFactoryImplementor sessionFactory()

Deprecated

as a consequence of SessionFactoryImplementor being deprecated. See corresponding docs for further information.

setTransactionTimeOutback to summary
public void setTransactionTimeOut(int seconds)

Implements org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.setTransactionTimeOut.

Doc from org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner.setTransactionTimeOut.

Set the effective transaction timeout period for the current transaction, in seconds.

Parameters
seconds:int

The number of seconds before a time out should occur.

Annotations
@Override
sqlExceptionHelperback to summary
public SqlExceptionHelper sqlExceptionHelper()

Access to the SqlExceptionHelper

Returns:SqlExceptionHelper

The SqlExceptionHelper