Package org.hibernate.engine.spi

Examples of org.hibernate.engine.spi.SessionFactoryImplementor


  private SessionImplementor openTemporarySessionForLoading() {
    if ( sessionFactoryUuid == null ) {
      throwLazyInitializationException( "SessionFactory UUID not known to create temporary Session for loading" );
    }

    final SessionFactoryImplementor sf = (SessionFactoryImplementor)
        SessionFactoryRegistry.INSTANCE.getSessionFactory( sessionFactoryUuid );
    return (SessionImplementor) sf.openSession();
  }
View Full Code Here


   * @param event The load event
   *
   * @return The object loaded from the datasource, or null if not found.
   */
  protected Serializable loadFromDatasource(final ResolveNaturalIdEvent event) {
    final SessionFactoryImplementor factory = event.getSession().getFactory();
    final boolean stats = factory.getStatistics().isStatisticsEnabled();
    long startTime = 0;
    if ( stats ) {
      startTime = System.currentTimeMillis();
    }
   
    final Serializable pk = event.getEntityPersister().loadEntityIdByNaturalId(
        event.getOrderedNaturalIdValues(),
        event.getLockOptions(),
        event.getSession()
    );
   
    if ( stats ) {
      final NaturalIdRegionAccessStrategy naturalIdCacheAccessStrategy = event.getEntityPersister().getNaturalIdCacheAccessStrategy();
      final String regionName = naturalIdCacheAccessStrategy == null ? null : naturalIdCacheAccessStrategy.getRegion().getName();
     
      factory.getStatisticsImplementor().naturalIdQueryExecuted(
          regionName,
          System.currentTimeMillis() - startTime );
    }
   
    //PK can be null if the entity doesn't exist
View Full Code Here

          "Found shared references to a collection: " + type.getRole()
      );
    }
    ce.setReached( true );

    final SessionFactoryImplementor factory = session.getFactory();
    final CollectionPersister persister = factory.getCollectionPersister( type.getRole() );
    ce.setCurrentPersister( persister );
    //TODO: better to pass the id in as an argument?
    ce.setCurrentKey( type.getKeyOfOwner( entity, session ) );

    if ( LOG.isDebugEnabled() ) {
View Full Code Here

    final NaturalIdRegionAccessStrategy naturalIdCacheAccessStrategy = persister.getNaturalIdCacheAccessStrategy();
    pk = CacheHelper.fromSharedCache( session(), naturalIdCacheKey, naturalIdCacheAccessStrategy );

    // Found in second-level cache, store in session cache
    final SessionFactoryImplementor factory = session().getFactory();
    if ( pk != null ) {
      if ( factory.getStatistics().isStatisticsEnabled() ) {
        factory.getStatisticsImplementor().naturalIdCacheHit(
            naturalIdCacheAccessStrategy.getRegion().getName()
        );
      }

      if ( LOG.isTraceEnabled() ) {
        // protected to avoid Arrays.toString call unless needed
        LOG.tracef(
            "Found natural key [%s] -> primary key [%s] xref in second-level cache for %s",
            Arrays.toString( naturalIdValues ),
            pk,
            persister.getRootEntityName()
        );
      }

      if ( entityNaturalIdResolutionCache == null ) {
        entityNaturalIdResolutionCache = new NaturalIdResolutionCache( persister );
        NaturalIdResolutionCache existingCache = naturalIdResolutionCacheMap.putIfAbsent( persister, entityNaturalIdResolutionCache );
        if ( existingCache != null ) {
          entityNaturalIdResolutionCache = existingCache;
        }
      }

      entityNaturalIdResolutionCache.pkToNaturalIdMap.put( pk, cachedNaturalId );
      entityNaturalIdResolutionCache.naturalIdToPkMap.put( cachedNaturalId, pk );
    }
    else if ( factory.getStatistics().isStatisticsEnabled() ) {
      factory.getStatisticsImplementor().naturalIdCacheMiss( naturalIdCacheAccessStrategy.getRegion().getName() );
    }

    return pk;
  }
View Full Code Here

  @SuppressWarnings({"deprecation", "unchecked"})
  public Object readFrom(ResultSet rs, CollectionPersister persister, CollectionAliases descriptor, Object owner)
      throws HibernateException, SQLException {
    final Object object = persister.readElement( rs, owner, descriptor.getSuffixedElementAliases(), getSession() );
    final Type elementType = persister.getElementType();
    final SessionFactoryImplementor factory = persister.getFactory();
    final String indexNode = getIndexAttributeName( persister );

    final Element elem = element.addElement( persister.getElementNodeName() );
    elementType.setToXMLNode( elem, object, factory );
View Full Code Here

      if ( entityEntry.getStatus() == Status.DELETED ) {
        throw new AssertionFailure( "entity was deleted" );
      }

      final SessionFactoryImplementor factory = event.getSession().getFactory();

      Serializable requestedId = event.getRequestedId();

      Serializable savedId;
      if ( requestedId == null ) {
View Full Code Here

    if ( !useCache ) {
      // we can't use cache here
      return null;
    }

    final SessionFactoryImplementor factory = source.getFactory();
    final CacheKey ck = source.generateCacheKey(
        event.getEntityId(),
        persister.getIdentifierType(),
        persister.getRootEntityName()
    );

    final Object ce = CacheHelper.fromSharedCache( source, ck, persister.getCacheAccessStrategy() );
    if ( factory.getStatistics().isStatisticsEnabled() ) {
      if ( ce == null ) {
        factory.getStatisticsImplementor().secondLevelCacheMiss(
            persister.getCacheAccessStrategy().getRegion().getName()
        );
      }
      else {
        factory.getStatisticsImplementor().secondLevelCacheHit(
            persister.getCacheAccessStrategy().getRegion().getName()
        );
      }
    }
View Full Code Here

      Serializable entityId,
      EntityPersister persister,
      LoadEvent event) {

    final EventSource session = event.getSession();
    final SessionFactoryImplementor factory = session.getFactory();
    final EntityPersister subclassPersister = factory.getEntityPersister( entry.getSubclass() );

    if ( LOG.isTraceEnabled() ) {
      LOG.tracef(
          "Converting second-level cache entry [%s] into entity : %s",
          entry,
View Full Code Here

      final EntityPersister persister,
      final LoadEvent event) throws HibernateException {

    final Object optionalObject = event.getInstanceToLoad();
    final EventSource session = event.getSession();
    final SessionFactoryImplementor factory = session.getFactory();

    if ( LOG.isTraceEnabled() ) {
      LOG.tracev(
          "Assembling entity from second-level cache: {0}",
          MessageHelper.infoString( persister, id, factory )
      );
    }

    EntityPersister subclassPersister = factory.getEntityPersister( entry.getSubclass() );
    Object result = optionalObject == null ?
        session.instantiate( subclassPersister, id ) : optionalObject;

    // make it circular-reference safe
    final EntityKey entityKey = session.generateEntityKey( id, subclassPersister );
View Full Code Here

    if ( !lockable.isVersioned() ) {
      throw new HibernateException( "write locks via update not supported for non-versioned entities [" + lockable.getEntityName() + "]" );
    }

    // todo : should we additionally check the current isolation mode explicitly?
    final SessionFactoryImplementor factory = session.getFactory();
    try {
      final PreparedStatement st = session.getTransactionCoordinator().getJdbcCoordinator().getStatementPreparer().prepareStatement( sql );
      try {
        lockable.getVersionType().nullSafeSet( st, version, 1, session );
        int offset = 2;

        lockable.getIdentifierType().nullSafeSet( st, id, offset, session );
        offset += lockable.getIdentifierType().getColumnSpan( factory );

        if ( lockable.isVersioned() ) {
          lockable.getVersionType().nullSafeSet( st, version, offset, session );
        }

        final int affected = session.getTransactionCoordinator().getJdbcCoordinator().getResultSetReturn().executeUpdate( st );
        if ( affected < 0 ) {
          if (factory.getStatistics().isStatisticsEnabled()) {
            factory.getStatisticsImplementor().optimisticFailure( lockable.getEntityName() );
          }
          throw new StaleObjectStateException( lockable.getEntityName(), id );
        }

      }
View Full Code Here

TOP

Related Classes of org.hibernate.engine.spi.SessionFactoryImplementor

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.