/** * Is this instance persistent or detached? * If <tt>assumed</tt> is non-null, don't hit the database to make the * determination, instead assume that value; the client code must be * prepared to "recover" in the case that this assumed result is incorrect. */ public static boolean isNotTransient(String entityName, Object entity, Boolean assumed, SessionImplementor session) throws HibernateException { if (entity instanceof HibernateProxy) return true; if ( session.getPersistenceContext().isEntryFor(entity) ) return true; return !isTransient(entityName, entity, assumed, session); }
/** * Is this instance persistent or detached? * If <tt>assumed</tt> is non-null, don't hit the database to make the * determination, instead assume that value; the client code must be * prepared to "recover" in the case that this assumed result is incorrect. */ public static boolean isNotTransient(String entityName, Object entity, Boolean assumed, SessionImplementor session) throws HibernateException { if (entity instanceof HibernateProxy) return true; if ( session.getPersistenceContext().isEntryFor(entity) ) return true; return !isTransient(entityName, entity, assumed, session); }
public boolean contains(Object object) { if ( object instanceof HibernateProxy ) { //do not use proxiesByKey, since not all //proxies that point to this session's //instances are in that collection! LazyInitializer li = ( (HibernateProxy) object ).getHibernateLazyInitializer(); if ( li.isUninitialized() ) { //if it is an uninitialized proxy, pointing //with this session, then when it is accessed, //the underlying instance will be "contained" return li.getSession()==this; } else { //if it is initialized, see if the underlying //instance is contained, since we need to //account for the fact that it might have been //evicted object = li.getImplementation(); } } return persistenceContext.isEntryFor(object); }
/** * Handle the given update event. * * @param event The update event to be handled. * @throws HibernateException */ protected void entityIsDetached(SaveOrUpdateEvent event) throws HibernateException { log.trace("updating detached instance"); if ( event.getSession().getPersistenceContext().isEntryFor( event.getEntity() ) ) { //TODO: assertion only, could be optimized away throw new AssertionFailure("entity was persistent"); } Object entity = event.getEntity(); EntityPersister persister = event.getSession().getEntityPersister( event.getEntityName(), entity ); event.setRequestedId( getUpdateId( entity, persister, event.getRequestedId(), event.getSession().getEntityMode() ) ); performUpdate(event, entity, persister); }
/** * Handle the given update event. * * @param event The update event to be handled. * @throws HibernateException */ protected void entityIsDetached(SaveOrUpdateEvent event) throws HibernateException { log.trace("updating detached instance"); if ( event.getSession().getPersistenceContext().isEntryFor( event.getEntity() ) ) { //TODO: assertion only, could be optimized away throw new AssertionFailure("entity was persistent"); } Object entity = event.getEntity(); EntityPersister persister = event.getSession().getEntityPersister( event.getEntityName(), entity ); event.setRequestedId( getUpdateId( entity, persister, event.getRequestedId(), event.getSession().getEntityMode() ) ); performUpdate(event, entity, persister); }
if ( source.getPersistenceContext().isEntryFor(entity) ) { log.trace("ignoring persistent instance passed to replicate()");
if ( source.getPersistenceContext().isEntryFor(entity) ) { log.trace("ignoring persistent instance passed to replicate()");
private Object loadUnresolvedObject( final LoadEvent event, final EntityPersister persister, final EntityKey keyToLoad, final LoadEventListener.LoadType options, final PersistenceContext persistenceContext) { final HibernateOid oid = new HibernateOid(event.getEntityClassName(), event.getEntityId()); final NakedObjectSpecification spec = NakedObjectsContext.getReflector().loadSpecification(event.getEntityClassName()); final NakedObjectLoader loader = NakedObjectsContext.getObjectLoader(); NakedObject nakedObject = loader.getAdapterFor(oid); if (nakedObject == null) { nakedObject = loader.recreateAdapterForPersistent(oid, spec); Assert.assertFalse(persistenceContext.isEntryFor(nakedObject.getObject())); return nakedObject.getObject(); } else { return load(event, persister, keyToLoad, options); } } }