public Object load(Serializable id,
Object optionalObject,
SessionImplementor session) throws HibernateException {
Serializable[] batch = session.getPersistenceContext()
.getBatchFetchQueue()
.getEntityBatch( persister, id, batchSizes[0], session.getEntityMode() );
for ( int i=0; i< batchSizes.length-1; i++) {
final int smallBatchSize = batchSizes[i];
if ( batch[smallBatchSize-1]!=null ) {
Serializable[] smallBatch = new Serializable[smallBatchSize];
System.arraycopy(batch, 0, smallBatch, 0, smallBatchSize);
final List results = loaders[i].loadEntityBatch(
session,
smallBatch,
idType,
optionalObject,
persister.getEntityName(),
id,
persister
);
return getObjectFromList(results, id, session); //EARLY EXIT
}
}
return ( (UniqueEntityLoader) loaders[batchSizes.length-1] ).load(id, optionalObject, session);
}
|