/** * Return whether the given Hibernate Session will always hold the same * JDBC Connection. This is used to check whether the transaction manager * can safely prepare and clean up the JDBC Connection used for a transaction. * <p>The default implementation checks the Session's connection release mode * to be "on_close". * @param session the Hibernate Session to check * @see org.hibernate.engine.transaction.spi.TransactionContext#getConnectionReleaseMode() * @see org.hibernate.ConnectionReleaseMode#ON_CLOSE */ protected boolean isSameConnectionForEntireSession(Session session) { if (!(session instanceof TransactionContext)) { // The best we can do is to assume we're safe. return true; } ConnectionReleaseMode releaseMode = ((TransactionContext) session).getConnectionReleaseMode(); return ConnectionReleaseMode.ON_CLOSE.equals(releaseMode); }
public static LogicalConnectionImpl deserialize( ObjectInputStream ois, TransactionContext transactionContext) throws IOException, ClassNotFoundException { boolean isUserSuppliedConnection = ois.readBoolean(); boolean isClosed = ois.readBoolean(); int observerCount = ois.readInt(); List<ConnectionObserver> observers = CollectionHelper.arrayList( observerCount ); for ( int i = 0; i < observerCount; i++ ) { observers.add( (ConnectionObserver) ois.readObject() ); } return new LogicalConnectionImpl( transactionContext.getConnectionReleaseMode(), transactionContext.getTransactionEnvironment().getJdbcServices(), transactionContext.getJdbcConnectionAccess(), isUserSuppliedConnection, isClosed, observers ); } }
public static LogicalConnectionImpl deserialize( ObjectInputStream ois, TransactionContext transactionContext) throws IOException, ClassNotFoundException { boolean isUserSuppliedConnection = ois.readBoolean(); boolean isClosed = ois.readBoolean(); int observerCount = ois.readInt(); List<ConnectionObserver> observers = CollectionHelper.arrayList( observerCount ); for ( int i = 0; i < observerCount; i++ ) { observers.add( (ConnectionObserver) ois.readObject() ); } return new LogicalConnectionImpl( transactionContext.getConnectionReleaseMode(), transactionContext.getTransactionEnvironment().getJdbcServices(), transactionContext.getJdbcConnectionAccess(), isUserSuppliedConnection, isClosed, observers ); } }
public JdbcCoordinatorImpl( Connection userSuppliedConnection, TransactionCoordinatorImpl transactionCoordinator) { this.transactionCoordinator = transactionCoordinator; this.logicalConnection = new LogicalConnectionImpl( userSuppliedConnection, transactionCoordinator.getTransactionContext().getConnectionReleaseMode(), transactionCoordinator.getTransactionContext().getTransactionEnvironment().getJdbcServices(), transactionCoordinator.getTransactionContext().getJdbcConnectionAccess() ); }
public TransactionCoordinatorImpl( Connection userSuppliedConnection, TransactionContext transactionContext) { this.transactionContext = transactionContext; this.jdbcCoordinator = new JdbcCoordinatorImpl( userSuppliedConnection, this ); this.transactionEnvironment = transactionContext.getTransactionEnvironment(); this.transactionFactory = this.transactionEnvironment.getTransactionFactory(); this.observers = new ArrayList<TransactionObserver>(); this.synchronizationRegistry = new SynchronizationRegistryImpl(); reset(); final boolean registerSynchronization = transactionContext.isAutoCloseSessionEnabled() || transactionContext.isFlushBeforeCompletionEnabled() || transactionContext.getConnectionReleaseMode() == ConnectionReleaseMode.AFTER_TRANSACTION; if ( registerSynchronization ) { pulse(); } }
public TransactionCoordinatorImpl( Connection userSuppliedConnection, TransactionContext transactionContext) { this.transactionContext = transactionContext; this.jdbcCoordinator = new JdbcCoordinatorImpl( userSuppliedConnection, this ); this.transactionEnvironment = transactionContext.getTransactionEnvironment(); this.transactionFactory = this.transactionEnvironment.getTransactionFactory(); this.observers = new ArrayList<TransactionObserver>(); this.synchronizationRegistry = new SynchronizationRegistryImpl(); reset(); final boolean registerSynchronization = transactionContext.isAutoCloseSessionEnabled() || transactionContext.isFlushBeforeCompletionEnabled() || transactionContext.getConnectionReleaseMode() == ConnectionReleaseMode.AFTER_TRANSACTION; if ( registerSynchronization ) { pulse(); } }
public JdbcCoordinatorImpl( Connection userSuppliedConnection, TransactionCoordinatorImpl transactionCoordinator) { this.transactionCoordinator = transactionCoordinator; this.logicalConnection = new LogicalConnectionImpl( userSuppliedConnection, transactionCoordinator.getTransactionContext().getConnectionReleaseMode(), transactionCoordinator.getTransactionContext().getTransactionEnvironment().getJdbcServices(), transactionCoordinator.getTransactionContext().getJdbcConnectionAccess() ); }