/** * The mode for physical handling of the JDBC Connection * * @return The JDBC Connection handlng mode * * @deprecated (since 5.2) access via {@link #getLogicalConnection} instead */ @Deprecated default PhysicalConnectionHandlingMode getConnectionHandlingMode() { return getLogicalConnection().getConnectionHandlingMode(); }
/** * @deprecated (since 5.2) access via {@link #getLogicalConnection} instead */ @Deprecated default ResourceRegistry getResourceRegistry() { return getLogicalConnection().getResourceRegistry(); }
/** * The release mode under which this logical connection is operating. * * @return the release mode. * * @deprecated (since 5.2) use {@link PhysicalConnectionHandlingMode} via {@link #getLogicalConnection} instead */ @Deprecated default ConnectionReleaseMode getConnectionReleaseMode() { return getLogicalConnection().getConnectionHandlingMode().getReleaseMode(); }
/** * Determine whether the given Session is (still) physically connected * to the database, that is, holds an active JDBC Connection internally. * @param session the Hibernate Session to check * @see #isSameConnectionForEntireSession(Session) */ protected boolean isPhysicallyConnected(Session session) { if (!(session instanceof SessionImplementor)) { // The best we can do is to check whether we're logically connected. return session.isConnected(); } return ((SessionImplementor) session).getJdbcCoordinator().getLogicalConnection().isPhysicallyConnected(); }
@Override public boolean isConnected() { checkTransactionSynchStatus(); return jdbcCoordinator.getLogicalConnection().isOpen(); }
@Override public Connection connection() throws HibernateException { checkOpenOrWaitingForAutoClose(); return getJdbcCoordinator().getLogicalConnection().getPhysicalConnection(); }
@Override public Connection connection() { checkOpen(); return getJdbcCoordinator().getLogicalConnection().getPhysicalConnection(); }
@Override public T connectionHandlingMode() { return connectionHandlingMode( session.getJdbcCoordinator().getLogicalConnection().getConnectionHandlingMode() ); }
/** * Determine whether the given Session is (still) physically connected * to the database, that is, holds an active JDBC Connection internally. * @param session the Hibernate Session to check * @see #isSameConnectionForEntireSession(Session) */ protected boolean isPhysicallyConnected(Session session) { if (!(session instanceof SessionImplementor)) { // The best we can do is to check whether we're logically connected. return session.isConnected(); } return ((SessionImplementor) session).getJdbcCoordinator().getLogicalConnection().isPhysicallyConnected(); }
@Override public Connection disconnect() throws HibernateException { checkOpen(); log.debug( "Disconnecting session" ); return getJdbcCoordinator().getLogicalConnection().manualDisconnect(); }
@Override public T connectionReleaseMode() { return connectionReleaseMode( session.getJdbcCoordinator().getLogicalConnection().getConnectionHandlingMode().getReleaseMode() ); }
@Override public void reconnect(Connection conn) throws HibernateException { checkOpen(); log.debug( "Reconnecting session" ); checkTransactionSynchStatus(); getJdbcCoordinator().getLogicalConnection().manualReconnect( conn ); }
protected void releaseStatement(PreparedStatement insert, SharedSessionContractImplementor session) throws SQLException { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( insert ); session.getJdbcCoordinator().afterStatementExecution(); } }
@Test public void basicStreamTest() { Session session = openSession(); session.getTransaction().begin(); // mainly we want to make sure that closing the Stream releases the ScrollableResults too assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( false ) ); final Stream<MyEntity> stream = session.createQuery( "from MyEntity", MyEntity.class ).stream(); assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( true ) ); stream.forEach( System.out::println ); assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( true ) ); stream.close(); assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( false ) ); session.getTransaction().commit(); session.close(); }
private void doTheLoad(String sql, QueryParameters queryParameters, SharedSessionContractImplementor session) throws SQLException { final RowSelection selection = queryParameters.getRowSelection(); final int maxRows = LimitHelper.hasMaxRows( selection ) ? selection.getMaxRows() : Integer.MAX_VALUE; final List<AfterLoadAction> afterLoadActions = Collections.emptyList(); final SqlStatementWrapper wrapper = executeQueryStatement( sql, queryParameters, false, afterLoadActions, session ); final ResultSet rs = wrapper.getResultSet(); final Statement st = wrapper.getStatement(); try { processResultSet( rs, queryParameters, session, true, null, maxRows, afterLoadActions ); } finally { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( st ); session.getJdbcCoordinator().afterStatementExecution(); } }
private List doTheLoad(String sql, QueryParameters queryParameters, SharedSessionContractImplementor session) throws SQLException { final RowSelection selection = queryParameters.getRowSelection(); final int maxRows = LimitHelper.hasMaxRows( selection ) ? selection.getMaxRows() : Integer.MAX_VALUE; final List<AfterLoadAction> afterLoadActions = new ArrayList<>(); final SqlStatementWrapper wrapper = executeQueryStatement( sql, queryParameters, false, afterLoadActions, session ); final ResultSet rs = wrapper.getResultSet(); final Statement st = wrapper.getStatement(); try { return processResultSet( rs, queryParameters, session, false, null, maxRows, afterLoadActions ); } finally { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( st ); session.getJdbcCoordinator().afterStatementExecution(); } } }
/** * Execute given <tt>CallableStatement</tt>, advance to the first result and return SQL <tt>ResultSet</tt>. */ protected final ResultSet getResultSet( final CallableStatement st, final RowSelection selection, final LimitHandler limitHandler, final boolean autodiscovertypes, final SharedSessionContractImplementor session) throws SQLException, HibernateException { try { ResultSet rs = session.getJdbcCoordinator().getResultSetReturn().extract( st ); return processResultSet(rs, selection, limitHandler, autodiscovertypes, session); } catch (SQLException | HibernateException e) { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( st ); session.getJdbcCoordinator().afterStatementExecution(); throw e; } }
/** * Execute given <tt>PreparedStatement</tt>, advance to the first result and return SQL <tt>ResultSet</tt>. */ protected final ResultSet getResultSet( final PreparedStatement st, final RowSelection selection, final LimitHandler limitHandler, final boolean autodiscovertypes, final SharedSessionContractImplementor session) throws SQLException, HibernateException { try { ResultSet rs = session.getJdbcCoordinator().getResultSetReturn().extract( st ); return processResultSet(rs, selection, limitHandler, autodiscovertypes, session); } catch (SQLException | HibernateException e) { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( st ); session.getJdbcCoordinator().afterStatementExecution(); throw e; } }
private void cleanUpRows(String tableName, SharedSessionContractImplementor session) { final String sql = this.getIdTableSupport().getTruncateIdTableCommand() + " " + tableName; PreparedStatement ps = null; try { ps = session.getJdbcCoordinator().getStatementPreparer().prepareStatement( sql, false ); session.getJdbcCoordinator().getResultSetReturn().executeUpdate( ps ); } finally { if ( ps != null ) { try { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( ps ); } catch( Throwable ignore ) { // ignore } } } }
@Override public Serializable executeAndExtract(PreparedStatement insert, SharedSessionContractImplementor session) throws SQLException { ResultSet rs = session.getJdbcCoordinator().getResultSetReturn().execute( insert ); try { return IdentifierGeneratorHelper.getGeneratedIdentity( rs, persister.getRootTableKeyColumnNames()[0], persister.getIdentifierType(), session.getJdbcServices().getJdbcEnvironment().getDialect() ); } finally { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( rs, insert ); } }