protected CollectionAction( final CollectionPersister persister, final PersistentCollection collection, final Serializable key, final SharedSessionContractImplementor session) { this.persister = persister; this.session = session; this.key = key; this.collectionRole = persister.getRole(); this.collection = collection; }
/** * If a CollectionEntry represents a batch loadable collection, add * it to the queue. */ public void addBatchLoadableCollection(PersistentCollection collection, CollectionEntry ce) { final CollectionPersister persister = ce.getLoadedPersister(); LinkedHashMap<CollectionEntry, PersistentCollection> map = batchLoadableCollections.get( persister.getRole() ); if ( map == null ) { map = new LinkedHashMap<>( 16 ); batchLoadableCollections.put( persister.getRole(), map ); } map.put( ce, collection ); }
@Override public String toString() { return getClass().getName() + "<rs=" + resultSet + ", coll=" + MessageHelper.collectionInfoString( persister.getRole(), key ) + ">@" + Integer.toHexString( hashCode() ); } }
/** * After a collection was initialized or evicted, we don't * need to batch fetch it anymore, remove it from the queue * if necessary */ public void removeBatchLoadableCollection(CollectionEntry ce) { LinkedHashMap<CollectionEntry, PersistentCollection> map = batchLoadableCollections.get( ce.getLoadedPersister().getRole() ); if ( map != null ) { map.remove( ce ); } }
private void setLoadedPersister(CollectionPersister persister) { loadedPersister = persister; setRole( persister == null ? null : persister.getRole() ); }
/** * Has the owner of the collection changed since the collection * was snapshotted and detached? */ protected static boolean isOwnerUnchanged( final PersistentCollection snapshot, final CollectionPersister persister, final Serializable id ) { return isCollectionSnapshotValid(snapshot) && persister.getRole().equals( snapshot.getRole() ) && id.equals( snapshot.getKey() ); }
private String extractDetails(CollectionReference collectionReference) { // todo : include some form of parameterized type signature? i.e., List<String>, Set<Person>, etc return String.format( "%s(collection=%s, querySpaceUid=%s, path=%s)", collectionReference.getClass().getSimpleName(), collectionReference.getCollectionPersister().getRole(), collectionReference.getQuerySpaceUid(), collectionReference.getPropertyPath().getFullPath() ); }
CollectionStatisticsImpl(CollectionPersister persister) { super( () -> persister.getCacheAccessStrategy() != null ? persister.getCacheAccessStrategy().getRegion() : null ); this.collectionRole = persister.getRole(); }
private CollectionKey( String role, Serializable key, Type keyType, EntityMode entityMode, SessionFactoryImplementor factory) { this.role = role; this.key = key; this.keyType = keyType; this.entityMode = entityMode; this.factory = factory; //cache the hash-code this.hashCode = generateHashCode(); }
private void evict(Serializable id, CollectionPersister collectionPersister, EventSource session) { if ( LOG.isDebugEnabled() ) { LOG.debug( "Evict CollectionRegion " + collectionPersister.getRole() + " for id " + id ); } AfterTransactionCompletionProcess afterTransactionProcess = new CollectionEvictCacheAction( collectionPersister, null, id, session ).lockCache(); session.getActionQueue().registerProcess( afterTransactionProcess ); }
@Override public void startingCollection(CollectionDefinition collectionDefinition) { System.out.println( String.format( "%s Starting collection (%s)", StringHelper.repeat( ">>", ++depth ), collectionDefinition.getCollectionPersister().getRole() ) ); }
@Override public void finishingCollection(CollectionDefinition collectionDefinition) { System.out.println( String.format( "%s Finishing collection (%s)", StringHelper.repeat( ">>", depth-- ), collectionDefinition.getCollectionPersister().getRole() ) ); }
@Override public void finishingCollectionIndex(CollectionIndexDefinition collectionIndexDefinition) { System.out.println( String.format( "%s Finishing collection index (%s)", StringHelper.repeat( "<<", depth-- ), collectionIndexDefinition.getCollectionDefinition().getCollectionPersister().getRole() ) ); }
@Override public void finishingCollectionElements(CollectionElementDefinition elementDefinition) { System.out.println( String.format( "%s Finishing collection elements (%s)", StringHelper.repeat( "<<", depth-- ), elementDefinition.getCollectionDefinition().getCollectionPersister().getRole() ) ); }
@Override public void startingCollectionIndex(CollectionIndexDefinition collectionIndexDefinition) { System.out.println( String.format( "%s Starting collection index (%s)", StringHelper.repeat( ">>", ++depth ), collectionIndexDefinition.getCollectionDefinition().getCollectionPersister().getRole() ) ); }
public CollectionKey(CollectionPersister persister, Serializable key) { this( persister.getRole(), key, persister.getKeyType(), persister.getOwnerEntityPersister().getEntityMetamodel().getEntityMode(), persister.getFactory() ); }
@Override public void startingCollectionElements(CollectionElementDefinition elementDefinition) { System.out.println( String.format( "%s Starting collection elements (%s)", StringHelper.repeat( ">>", ++depth ), elementDefinition.getCollectionDefinition().getCollectionPersister().getRole() ) ); }
public CollectionReturnImpl(CollectionDefinition collectionDefinition, ExpandingQuerySpaces querySpaces) { super( querySpaces.makeRootCollectionQuerySpace( querySpaces.generateImplicitUid(), collectionDefinition.getCollectionPersister() ), new PropertyPath( "[" + collectionDefinition.getCollectionPersister().getRole() + "]" ), true ); } }
@Override public void execute() throws HibernateException { // this method is called when a new non-null collection is persisted // or when an existing (non-null) collection is moved to a new owner final PersistentCollection collection = getCollection(); preRecreate(); getPersister().recreate( collection, getKey(), getSession() ); getSession().getPersistenceContext().getCollectionEntry( collection ).afterAction( collection ); evict(); postRecreate(); if ( getSession().getFactory().getStatistics().isStatisticsEnabled() ) { getSession().getFactory().getStatistics().recreateCollection( getPersister().getRole() ); } }