Package org.hibernate.event

Examples of org.hibernate.event.EventSource


    this.callbackHandler = callbackHandler;
  }

  public void onPostUpdate(PostUpdateEvent event) {
    Object entity = event.getEntity();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);
  }
View Full Code Here


    }
  }

  public void onPostRecreateCollection(PostCollectionRecreateEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);
  }
View Full Code Here

    handlePostUpdate(entity, eventSource);
  }

  public void onPostRemoveCollection(PostCollectionRemoveEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);   
  }
View Full Code Here

    handlePostUpdate(entity, eventSource);   
  }

  public void onPostUpdateCollection(PostCollectionUpdateEvent event) {
    Object entity = event.getCollection().getOwner();
    EventSource eventSource = event.getSession();
    handlePostUpdate(entity, eventSource);   
  }
View Full Code Here

   *
   * @param event The evict event to be handled.
   * @throws HibernateException
   */
  public void onEvict(EvictEvent event) throws HibernateException {
    EventSource source = event.getSession();
    final Object object = event.getObject();
    final PersistenceContext persistenceContext = source.getPersistenceContext();

    if ( object instanceof HibernateProxy ) {
      LazyInitializer li = ( (HibernateProxy) object ).getHibernateLazyInitializer();
      Serializable id = li.getIdentifier();
      EntityPersister persister = source.getFactory().getEntityPersister( li.getEntityName() );
      if ( id == null ) {
        throw new IllegalArgumentException("null identifier");
      }

      EntityKey key = new EntityKey( id, persister, source.getEntityMode() );
      persistenceContext.removeProxy( key );

      if ( !li.isUninitialized() ) {
        final Object entity = persistenceContext.removeEntity( key );
        if ( entity != null ) {
          EntityEntry e = event.getSession().getPersistenceContext().removeEntry( entity );
          doEvict( entity, key, e.getPersister(), event.getSession() );
        }
      }
      li.unsetSession();
    }
    else {
      EntityEntry e = persistenceContext.removeEntry( object );
      if ( e != null ) {
        EntityKey key = new EntityKey( e.getId(), e.getPersister(), source.getEntityMode()  );
        persistenceContext.removeEntity( key );
        doEvict( object, key, e.getPersister(), source );
      }
    }
  }
View Full Code Here

    return super.invokeDeleteLifecycle( session, entity, persister );
  }

  @Override
  protected void performDetachedEntityDeletionCheck(DeleteEvent event) {
    EventSource source = event.getSession();
    String entityName = event.getEntityName();
    EntityPersister persister = source.getEntityPersister( entityName, event.getObject() );
    Serializable id =  persister.getIdentifier( event.getObject(), source.getEntityMode() );
    entityName = entityName == null ? source.guessEntityName( event.getObject() ) : entityName;
    throw new IllegalArgumentException("Removing a detached instance "+ entityName + "#" + id);
  }
View Full Code Here

     * @param event The auto-flush event to be handled.
     * @throws HibernateException
     */
  public void onAutoFlush(AutoFlushEvent event) throws HibernateException {

    final EventSource source = event.getSession();
   
    if ( flushMightBeNeeded(source) ) {

      final int oldSize = source.getActionQueue().numberOfCollectionRemovals();

      flushEverythingToExecutions(event);
     
      if ( flushIsReallyNeeded(event, source) ) {

        log.trace("Need to execute flush");

        performExecutions(source);
        postFlush(source);
        // note: performExecutions() clears all collectionXxxxtion
        // collections (the collection actions) in the session

        if ( source.getFactory().getStatistics().isStatisticsEnabled() ) {
          source.getFactory().getStatisticsImplementor().flush();
        }
       
      }
      else {

        log.trace("Dont need to execute flush");
        source.getActionQueue().clearFromFlushNeededCheck( oldSize );
      }
     
      event.setFlushRequired( flushIsReallyNeeded( event, source ) );

    }
View Full Code Here

          "reassociating transient instance: " +
              MessageHelper.infoString( persister, id, event.getSession().getFactory() )
      );
    }

    EventSource source = event.getSession();
    EntityKey key = new EntityKey( id, persister, source.getEntityMode() );

    source.getPersistenceContext().checkUniqueness( key, object );

    //get a snapshot
    Object[] values = persister.getPropertyValues( object, source.getEntityMode() );
    TypeFactory.deepCopy(
        values,
        persister.getPropertyTypes(),
        persister.getPropertyUpdateability(),
        values,
        source
    );
    Object version = Versioning.getVersion( values, persister );

    EntityEntry newEntry = source.getPersistenceContext().addEntity(
        object,
        Status.MANAGED,
        values,
        key,
        version,
View Full Code Here

   * @param event The merge event to be handled.
   * @throws HibernateException
   */
  public void onMerge(MergeEvent event, Map copyCache) throws HibernateException {

    final EventSource source = event.getSession();
    final Object original = event.getOriginal();

    if ( original != null ) {

      final Object entity;
      if ( original instanceof HibernateProxy ) {
        LazyInitializer li = ( (HibernateProxy) original ).getHibernateLazyInitializer();
        if ( li.isUninitialized() ) {
          log.trace("ignoring uninitialized proxy");
          event.setResult( source.load( li.getEntityName(), li.getIdentifier() ) );
          return; //EARLY EXIT!
        }
        else {
          entity = li.getImplementation();
        }
      }
      else {
        entity = original;
      }
     
      if ( copyCache.containsKey(entity) &&
          source.getContextEntityIdentifier( copyCache.get( entity ) ) != null ) {
        log.trace("already merged");
        event.setResult(entity);
      }
      else {
        event.setEntity( entity );
        int entityState = -1;

        // Check the persistence context for an entry relating to this
        // entity to be merged...
        EntityEntry entry = source.getPersistenceContext().getEntry( entity );
        if ( entry == null ) {
          EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
          Serializable id = persister.getIdentifier( entity, source.getEntityMode() );
          if ( id != null ) {
            EntityKey key = new EntityKey( id, persister, source.getEntityMode() );
            Object managedEntity = source.getPersistenceContext().getEntity( key );
            entry = source.getPersistenceContext().getEntry( managedEntity );
            if ( entry != null ) {
              // we have specialized case of a detached entity from the
              // perspective of the merge operation.  Specifically, we
              // have an incoming entity instance which has a corresponding
              // entry in the current persistence context, but registered
View Full Code Here

    log.trace("ignoring persistent instance");
   
    //TODO: check that entry.getIdentifier().equals(requestedId)
   
    final Object entity = event.getEntity();
    final EventSource source = event.getSession();
    final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
   
    copyCache.put(entity, entity); //before cascade!
   
    cascadeOnMerge(source, persister, entity, copyCache);
    copyValues(persister, entity, entity, source, copyCache);
View Full Code Here

TOP

Related Classes of org.hibernate.event.EventSource

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.