Java 类org.hibernate.id.IntegralDataTypeHolder 实例源码

项目:lightmare    文件:TableGeneratorExt.java   
/**
 * Makes insert of last value of identifier
 * 
 * @param connection
 * @param value
 * @throws SQLException
 */
private void insert(Connection connection, IntegralDataTypeHolder value)
    throws SQLException {

    PreparedStatement insertPS = null;
    try {
    statementLogger.logStatement(insertQuery,
        FormatStyle.BASIC.getFormatter());
    insertPS = connection.prepareStatement(insertQuery);
    insertPS.setString(FIRST_COLUMN, segmentValue);
    value.bind(insertPS, SECOND_COLUMN);
    insertPS.execute();
    } finally {
    close(insertPS);
    }
}
项目:lightmare    文件:TableGeneratorExt.java   
private void onSelect(Connection connection,
    IntegralDataTypeHolder value) throws SQLException {

    PreparedStatement selectPS = connection
        .prepareStatement(selectQuery);
    try {
    selectPS.setString(FIRST_COLUMN, segmentValue);
    ResultSet selectRS = selectPS.executeQuery();
    if (selectRS.next()) {
        value.initialize(selectRS, FIRST_COLUMN);
    } else {
        value.initialize(currentValue);
        insert(connection, value);
    }
    selectRS.close();
    } catch (SQLException ex) {
    LOG.unableToReadOrInitHiValue(ex);
    throw ex;
    } finally {
    selectPS.close();
    }
}
项目:lightmare    文件:TableGeneratorExt.java   
@Override
public IntegralDataTypeHolder execute(Connection connection)
    throws SQLException {
    IntegralDataTypeHolder value = IdentifierGeneratorHelper
        .getIntegralDataTypeHolder(identifierType
            .getReturnedClass());
    int rows;
    do {
    statementLogger.logStatement(selectQuery,
        FormatStyle.BASIC.getFormatter());
    onSelect(connection, value);
    statementLogger.logStatement(updateQuery,
        FormatStyle.BASIC.getFormatter());
    rows = onUpdate(connection, value);
    } while (rows == ZERO_ROWS);

    return value;
}
项目:lams    文件:NoopOptimizer.java   
@Override
public Serializable generate(AccessCallback callback) {
    // IMPL NOTE : this method is called concurrently and is
    // not synchronized. It is very important to work on the
    // local variable: the field lastSourceValue is not
    // reliable as it might be mutated by multipled threads.
    // The lastSourceValue field is only accessed by tests,
    // so this is not a concern.
    IntegralDataTypeHolder value = null;
    while ( value == null || value.lt( 1 ) ) {
        value = callback.getNextValue();
    }
    lastSourceValue = value;
    return value.makeValue();
}
项目:lightmare    文件:TableGeneratorExt.java   
@Override
public IntegralDataTypeHolder getNextValue() {
    ReturningWork returnWork = new ReturningWork(statementLogger,
        currentValue);
    return session.getTransactionCoordinator().getTransaction()
        .createIsolationDelegate()
        .delegateWork(returnWork, Boolean.TRUE);
}
项目:lams    文件:PooledLoOptimizer.java   
@Override
public IntegralDataTypeHolder getLastSourceValue() {
    return noTenantGenerationState().lastSourceValue;
}
项目:lams    文件:LegacyHiLoAlgorithmOptimizer.java   
@Override
public synchronized IntegralDataTypeHolder getLastSourceValue() {
    return noTenantGenerationState().lastSourceValue.copy();
}
项目:lams    文件:TableGenerator.java   
private IntegralDataTypeHolder makeValue() {
    return IdentifierGeneratorHelper.getIntegralDataTypeHolder( identifierType.getReturnedClass() );
}
项目:lams    文件:NoopOptimizer.java   
@Override
public IntegralDataTypeHolder getLastSourceValue() {
    return lastSourceValue;
}
项目:lams    文件:TableStructure.java   
private IntegralDataTypeHolder makeValue() {
    return IdentifierGeneratorHelper.getIntegralDataTypeHolder( numberType );
}
项目:lams    文件:TableStructure.java   
@Override
public AccessCallback buildCallback(final SessionImplementor session) {
    final SqlStatementLogger statementLogger = session.getFactory().getServiceRegistry()
            .getService( JdbcServices.class )
            .getSqlStatementLogger();
    final SessionEventListenerManager statsCollector = session.getEventListenerManager();

    return new AccessCallback() {
        @Override
        public IntegralDataTypeHolder getNextValue() {
            return session.getTransactionCoordinator().getTransaction().createIsolationDelegate().delegateWork(
                    new AbstractReturningWork<IntegralDataTypeHolder>() {
                        @Override
                        public IntegralDataTypeHolder execute(Connection connection) throws SQLException {
                            final IntegralDataTypeHolder value = makeValue();
                            int rows;
                            do {
                                final PreparedStatement selectStatement = prepareStatement( connection, selectQuery, statementLogger, statsCollector );
                                try {
                                    final ResultSet selectRS = executeQuery( selectStatement, statsCollector );
                                    if ( !selectRS.next() ) {
                                        final String err = "could not read a hi value - you need to populate the table: " + tableName;
                                        LOG.error( err );
                                        throw new IdentifierGenerationException( err );
                                    }
                                    value.initialize( selectRS, 1 );
                                    selectRS.close();
                                }
                                catch (SQLException sqle) {
                                    LOG.error( "could not read a hi value", sqle );
                                    throw sqle;
                                }
                                finally {
                                    selectStatement.close();
                                }


                                final PreparedStatement updatePS = prepareStatement( connection, updateQuery, statementLogger, statsCollector );
                                try {
                                    final int increment = applyIncrementSizeToSourceValues ? incrementSize : 1;
                                    final IntegralDataTypeHolder updateValue = value.copy().add( increment );
                                    updateValue.bind( updatePS, 1 );
                                    value.bind( updatePS, 2 );
                                    rows = executeUpdate( updatePS, statsCollector );
                                }
                                catch (SQLException e) {
                                    LOG.unableToUpdateQueryHiValue( tableName, e );
                                    throw e;
                                }
                                finally {
                                    updatePS.close();
                                }
                            } while ( rows == 0 );

                            accessCounter++;

                            return value;
                        }
                    },
                    true
            );
        }

        @Override
        public String getTenantIdentifier() {
            return session.getTenantIdentifier();
        }
    };
}
项目:lams    文件:HiLoOptimizer.java   
@Override
public synchronized IntegralDataTypeHolder getLastSourceValue() {
    return noTenantGenerationState().lastSourceValue;
}
项目:lams    文件:PooledOptimizer.java   
@Override
public IntegralDataTypeHolder getLastSourceValue() {
    return noTenantGenerationState().hiValue;
}
项目:lams    文件:SequenceStructure.java   
@Override
public AccessCallback buildCallback(final SessionImplementor session) {
    return new AccessCallback() {
        @Override
        public IntegralDataTypeHolder getNextValue() {
            accessCounter++;
            try {
                final PreparedStatement st = session.getTransactionCoordinator().getJdbcCoordinator().getStatementPreparer().prepareStatement( sql );
                try {
                    final ResultSet rs = session.getTransactionCoordinator().getJdbcCoordinator().getResultSetReturn().extract( st );
                    try {
                        rs.next();
                        final IntegralDataTypeHolder value = IdentifierGeneratorHelper.getIntegralDataTypeHolder( numberType );
                        value.initialize( rs, 1 );
                        if ( LOG.isDebugEnabled() ) {
                            LOG.debugf( "Sequence value obtained: %s", value.makeValue() );
                        }
                        return value;
                    }
                    finally {
                        try {
                            session.getTransactionCoordinator().getJdbcCoordinator().release( rs, st );
                        }
                        catch( Throwable ignore ) {
                            // intentionally empty
                        }
                    }
                }
                finally {
                    session.getTransactionCoordinator().getJdbcCoordinator().release( st );
                }

            }
            catch ( SQLException sqle) {
                throw session.getFactory().getSQLExceptionHelper().convert(
                        sqle,
                        "could not get next sequence value",
                        sql
                );
            }
        }

        @Override
        public String getTenantIdentifier() {
            return session.getTenantIdentifier();
        }
    };
}
项目:debop4j    文件:RedisDialect.java   
@Override
public void nextValue(RowKey key, IntegralDataTypeHolder value, int increment, int initialValue) {
    throw new NotImplementedException("구현 중");
}
项目:debop4j    文件:DatastoreProviderGeneratingSchema.java   
@Override
public void nextValue(RowKey key, IntegralDataTypeHolder value, int increment, int initialValue) {
    //To change body of implemented methods use File | Settings | File Templates.
}
项目:lightmare    文件:TableGeneratorExt.java   
private int onUpdate(Connection connection, IntegralDataTypeHolder value)
    throws SQLException {

    int rows;

    PreparedStatement updatePS = connection
        .prepareStatement(updateQuery);
    try {
    final IntegralDataTypeHolder updateValue = value.copy()
        .initialize(currentValue);
    // TODO check for incrementSize
    // increment options
    updateValue.increment();

    // gets existing value and
    // incremented current values as
    // long types to compare
    Long existing = value.copy().makeValue().longValue();
    Long current = updateValue.copy().makeValue().longValue();
    // checks if incremented current
    // value is less then value and
    // puts incremented value
    // instead of incremented
    // current value for
    // update
    if (existing > current) {
        updateValue.initialize(existing).increment();
    }
    updateValue.bind(updatePS, FIRST_COLUMN);
    value.bind(updatePS, SECOND_COLUMN);
    updatePS.setString(THIRD_COLUMN, segmentValue);
    rows = updatePS.executeUpdate();
    value.initialize(currentValue);
    } catch (SQLException ex) {
    LOG.unableToUpdateQueryHiValue(tableName, ex);
    throw ex;
    } finally {
    updatePS.close();
    }

    return rows;
}
项目:lams    文件:LegacyHiLoAlgorithmOptimizer.java   
/**
 * Getter for property 'lastValue'.
 * <p/>
 * Exposure intended for testing purposes.
 *
 * @return Value for property 'lastValue'.
 */
@SuppressWarnings( {"UnusedDeclaration"})
public synchronized IntegralDataTypeHolder getLastValue() {
    return noTenantGenerationState().value;
}
项目:lams    文件:AccessCallback.java   
/**
 * Retrieve the next value from the underlying source.
 *
 * @return The next value.
 */
public IntegralDataTypeHolder getNextValue();
项目:lams    文件:HiLoOptimizer.java   
/**
 * Getter for property 'lastValue'.
 * <p/>
 * Exposure intended for testing purposes.
 *
 * @return Value for property 'lastValue'.
 */
public synchronized IntegralDataTypeHolder getLastValue() {
    return noTenantGenerationState().value.copy().decrement();
}
项目:lams    文件:HiLoOptimizer.java   
/**
 * Getter for property 'upperLimit'.
 * <p/>
 * Exposure intended for testing purposes.
 *
 * @return Value for property 'upperLimit'.
 */
public synchronized IntegralDataTypeHolder getHiValue() {
    return noTenantGenerationState().upperLimit;
}
项目:lams    文件:PooledOptimizer.java   
/**
 * Getter for property 'lastValue'.
 * <p/>
 * Exposure intended for testing purposes.
 *
 * @return Value for property 'lastValue'.
 */
public IntegralDataTypeHolder getLastValue() {
    return noTenantGenerationState().value.copy().decrement();
}
项目:lams    文件:Optimizer.java   
/**
 * A common means to access the last value obtained from the underlying
 * source.  This is intended for testing purposes, since accessing the
 * underlying database source directly is much more difficult.
 *
 * @return The last value we obtained from the underlying source;
 * null indicates we have not yet consulted with the source.
 */
public IntegralDataTypeHolder getLastSourceValue();