@Override public CacheEntry buildCacheEntry(Object entity, Object[] state, Object version, SharedSessionContractImplementor session) { return new ReferenceCacheEntryImpl( entity, persister ); } }
@Override public CacheEntry buildCacheEntry(Object entity, Object[] state, Object version, SharedSessionContractImplementor session) { return new StandardCacheEntryImpl( state, persister, version, session, entity ); } }
private StructuredCacheEntryHelper(EntityPersister persister) { this.persister = persister; this.structure = new StructuredCacheEntry( persister ); }
@Override @SuppressWarnings("unchecked") public Object structure(Object item) { final CacheEntry entry = (CacheEntry) item; final String[] names = persister.getPropertyNames(); final Map map = new HashMap( names.length + 3, 1f ); map.put( SUBCLASS_KEY, entry.getSubclass() ); map.put( VERSION_KEY, entry.getVersion() ); for ( int i=0; i<names.length; i++ ) { map.put( names[i], entry.getDisassembledState()[i] ); } return map; } }
final EntityKey entityKey) { CacheEntry entry = (CacheEntry) persister.getCacheEntryStructure().destructure( ce, source.getFactory() ); if ( entry.isReferenceEntry() ) { if ( event.getInstanceToLoad() != null ) { throw new HibernateException(
EntityPersister persister = (EntityPersister) sessionFactory().getClassMetadata( MyReferenceData.class ); assertFalse( persister.isMutable() ); assertTrue( persister.buildCacheEntry( null, null, null, null ).isReferenceEntry() ); assertFalse( persister.hasProxy() );
Serializable[] disassembledValues = cacheEntry.getDisassembledState(); final Object[] snapshot = entry.getLoadedState(); for ( int j = 0; j < lazyPropertyNames.length; j++ ) {
CollectionCacheEntry cacheEntry = (CollectionCacheEntry) persister.getCacheEntryStructure().destructure( ce, factory cacheEntry.assemble( collection, persister, persistenceContext.getCollectionOwner( id, persister ) ); persistenceContext.getCollectionEntry( collection ).postInitialize( collection );
@Override public Object structure(Object item) { final CollectionCacheEntry entry = (CollectionCacheEntry) item; return Arrays.asList( entry.getState() ); }
final Object cachedEntry = CacheHelper.fromSharedCache( session, ck, cache ); if ( cachedEntry != null ) { CacheEntry entry = (CacheEntry) persister.getCacheEntryStructure().destructure( cachedEntry, factory ); return ( (ReferenceCacheEntryImpl) entry ).getReference();
@Override public Object destructure(Object structured, SessionFactoryImplementor factory) { final List list = (List) structured; return new CollectionCacheEntry( list.toArray( new Serializable[list.size()] ) ); }
private void makeEntityCircularReferenceSafe( ReferenceCacheEntryImpl referenceCacheEntry, EventSource session, Object entity, EntityKey entityKey) { // make it circular-reference safe final StatefulPersistenceContext statefulPersistenceContext = (StatefulPersistenceContext) session.getPersistenceContext(); if ( ( entity instanceof ManagedEntity ) ) { statefulPersistenceContext.addReferenceEntry( entity, Status.READ_ONLY ); } else { TwoPhaseLoad.addUninitializedCachedEntity( entityKey, entity, referenceCacheEntry.getSubclassPersister(), LockMode.NONE, referenceCacheEntry.getVersion(), session ); } statefulPersistenceContext.initializeNonLazyCollections(); }
private Object convertCacheReferenceEntryToEntity( ReferenceCacheEntryImpl referenceCacheEntry, EventSource session, EntityKey entityKey) { final Object entity = referenceCacheEntry.getReference(); if ( entity == null ) { throw new IllegalStateException( "Reference cache entry contained null : " + referenceCacheEntry.toString() ); } else { makeEntityCircularReferenceSafe( referenceCacheEntry, session, entity, entityKey ); return entity; } }
EntityPersister persister = (EntityPersister) sessionFactory().getClassMetadata( MyEnhancedReferenceData.class ); assertFalse( persister.isMutable() ); assertTrue( persister.buildCacheEntry( null, null, null, null ).isReferenceEntry() ); assertFalse( persister.hasProxy() );
@Override @SuppressWarnings("unchecked") public Object structure(Object item) { final CollectionCacheEntry entry = (CollectionCacheEntry) item; final Serializable[] state = entry.getState(); final Map map = new HashMap( state.length ); int i = 0; while ( i < state.length ) { map.put( state[i++], state[i++] ); } return map; }
@Override public CacheEntry buildCacheEntry(Object entity, Object[] state, Object version, SharedSessionContractImplementor session) { return new StandardCacheEntryImpl( state, persister, version, session, entity ); } }
@Override public Object destructure(Object structured, SessionFactoryImplementor factory) { final Map<?,?> map = (Map<?,?>) structured; final Serializable[] state = new Serializable[ map.size()*2 ]; int i = 0; for ( Map.Entry me : map.entrySet() ) { state[i++] = (Serializable) me.getKey(); state[i++] = (Serializable) me.getValue(); } return new CollectionCacheEntry(state); }
@Override public String toString() { return "CollectionCacheEntry" + ArrayHelper.toString( getState() ); }
@Override public CacheEntry buildCacheEntry( Object entity, Object[] state, Object version, SharedSessionContractImplementor session) { return new StandardCacheEntryImpl( state, this, version, session, entity ); }
@Override @SuppressWarnings("unchecked") public Object destructure(Object structured, SessionFactoryImplementor factory) { final Map map = (Map) structured; final String subclass = (String) map.get( SUBCLASS_KEY ); final Object version = map.get( VERSION_KEY ); final EntityPersister subclassPersister = factory.getEntityPersister( subclass ); final String[] names = subclassPersister.getPropertyNames(); final Serializable[] disassembledState = new Serializable[names.length]; for ( int i = 0; i < names.length; i++ ) { disassembledState[i] = (Serializable) map.get( names[i] ); } return new StandardCacheEntryImpl( disassembledState, subclass, version ); }