@Override protected int handlePrependedParametersOnIdSelection(PreparedStatement ps, SharedSessionContractImplementor session, int pos) throws SQLException { Helper.INSTANCE.bindSessionIdentifier( ps, session, pos ); return 1; }
@Override protected PreparationContextImpl buildPreparationContext() { return new PreparationContextImpl(); }
public MultiTableBulkIdStrategy getDefaultMultiTableBulkIdStrategy() { return new PersistentTableBulkIdStrategy(); }
@Override protected IdTableInfoImpl buildIdTableInfo( PersistentClass entityBinding, Table idTable, JdbcServices jdbcServices, MetadataImplementor metadata, PreparationContextImpl context) { final String renderedName = jdbcServices.getJdbcEnvironment().getQualifiedObjectNameFormatter().format( idTable.getQualifiedTableName(), jdbcServices.getJdbcEnvironment().getDialect() ); context.creationStatements.add( buildIdTableCreateStatement( idTable, jdbcServices, metadata ) ); if ( dropIdTables ) { context.dropStatements.add( buildIdTableDropStatement( idTable, jdbcServices ) ); } return new IdTableInfoImpl( renderedName ); }
@Override public DeleteHandler buildDeleteHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final DeleteStatement updateStatement = (DeleteStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new DeleteHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ); }
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new UpdateHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ); }
@Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { // clean up our id-table rows Helper.INSTANCE.cleanUpRows( idTableInfo.getQualifiedIdTableName(), session ); } }
@Override protected int handlePrependedParametersOnIdSelection(PreparedStatement ps, SharedSessionContractImplementor session, int pos) throws SQLException { Helper.INSTANCE.bindSessionIdentifier( ps, session, pos ); return 1; }
@Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { // clean up our id-table rows Helper.INSTANCE.cleanUpRows( idTableInfo.getQualifiedIdTableName(), session ); } }
@Override protected void handleAddedParametersOnDelete(PreparedStatement ps, SharedSessionContractImplementor session) throws SQLException { Helper.INSTANCE.bindSessionIdentifier( ps, session, 1 ); }
@Override protected void handleAddedParametersOnUpdate(PreparedStatement ps, SharedSessionContractImplementor session, int position) throws SQLException { Helper.INSTANCE.bindSessionIdentifier( ps, session, position ); }
public void cleanUpRows(String tableName, SharedSessionContractImplementor session) { final String sql = "delete from " + tableName + " where " + SESSION_ID_COLUMN_NAME + "=?"; try { PreparedStatement ps = null; try { ps = session.getJdbcCoordinator().getStatementPreparer().prepareStatement( sql, false ); bindSessionIdentifier( ps, session, 1 ); session.getJdbcCoordinator().getResultSetReturn().executeUpdate( ps ); } finally { if ( ps != null ) { try { session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( ps ); } catch( Throwable ignore ) { // ignore } } } } catch (SQLException e) { throw session.getJdbcServices().getSqlExceptionHelper().convert( e, "Unable to clean up id table [" + tableName + "]", sql ); } } }