Package org.hibernate.engine.spi

Examples of org.hibernate.engine.spi.SessionFactoryImplementor


  public void lock(Serializable id, Object version, Object object, int timeout, SessionImplementor session) {
    if ( !lockable.isVersioned() ) {
      throw new HibernateException( "write locks via update not supported for non-versioned entities [" + lockable.getEntityName() + "]" );
    }

    final SessionFactoryImplementor factory = session.getFactory();
    try {
      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 );
          // todo:  should this instead check for exactly one row modified?
          if ( affected < 0 ) {
            if (factory.getStatistics().isStatisticsEnabled()) {
              factory.getStatisticsImplementor().optimisticFailure( lockable.getEntityName() );
            }
            throw new StaleObjectStateException( lockable.getEntityName(), id );
          }

        }
View Full Code Here


      throw new PessimisticEntityLockException( object, "could not obtain pessimistic lock", e );
    }
  }

  protected String generateLockString() {
    final SessionFactoryImplementor factory = lockable.getFactory();
    final Update update = new Update( factory.getDialect() );
    update.setTableName( lockable.getRootTableName() );
    update.addPrimaryKeyColumns( lockable.getRootTableIdentifierColumnNames() );
    update.setVersionColumnName( lockable.getVersionColumnName() );
    update.addColumn( lockable.getVersionColumnName() );
    if ( factory.getSettings().isCommentsEnabled() ) {
      update.setComment( lockMode + " lock " + lockable.getEntityName() );
    }
    return update.toStatementString();
  }
View Full Code Here

  }

  @Override
  public void lock(Serializable id, Object version, Object object, int timeout, SessionImplementor session) {
    final String sql = determineSql( timeout );
    final SessionFactoryImplementor factory = session.getFactory();
    try {
      try {
        final PreparedStatement st = session.getTransactionCoordinator().getJdbcCoordinator().getStatementPreparer().prepareStatement( sql );
        try {
          getLockable().getIdentifierType().nullSafeSet( st, id, 1, session );
          if ( getLockable().isVersioned() ) {
            getLockable().getVersionType().nullSafeSet(
                st,
                version,
                getLockable().getIdentifierType().getColumnSpan( factory ) + 1,
                session
            );
          }

          final ResultSet rs = session.getTransactionCoordinator().getJdbcCoordinator().getResultSetReturn().extract( st );
          try {
            if ( !rs.next() ) {
              if ( factory.getStatistics().isStatisticsEnabled() ) {
                factory.getStatisticsImplementor()
                    .optimisticFailure( getLockable().getEntityName() );
              }
              throw new StaleObjectStateException( getLockable().getEntityName(), id );
            }
          }
View Full Code Here

      throw new PessimisticEntityLockException( object, "could not obtain pessimistic lock", e );
    }
  }

  protected String generateLockString(int lockTimeout) {
    final SessionFactoryImplementor factory = getLockable().getFactory();
    final LockOptions lockOptions = new LockOptions( getLockMode() );
    lockOptions.setTimeOut( lockTimeout );
    final SimpleSelect select = new SimpleSelect( factory.getDialect() )
        .setLockOptions( lockOptions )
        .setTableName( getLockable().getRootTableName() )
        .addColumn( getLockable().getRootTableIdentifierColumnNames()[0] )
        .addCondition( getLockable().getRootTableIdentifierColumnNames(), "=?" );
    if ( getLockable().isVersioned() ) {
      select.addCondition( getLockable().getVersionColumnName(), "=?" );
    }
    if ( factory.getSettings().isCommentsEnabled() ) {
      select.setComment( getLockMode() + " lock " + getLockable().getEntityName() );
    }
    return select.toStatementString();
  }
View Full Code Here

  public final String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
    final String entityName = criteriaQuery.getEntityName( criteria, propertyName );
    final String actualPropertyName = criteriaQuery.getPropertyName( propertyName );
    final String sqlAlias = criteriaQuery.getSQLAlias( criteria, propertyName );

    final SessionFactoryImplementor factory = criteriaQuery.getFactory();
    final QueryableCollection collectionPersister = getQueryableCollection( entityName, actualPropertyName, factory );

    final String[] collectionKeys = collectionPersister.getKeyColumnNames();
    final String[] ownerKeys = ( (Loadable) factory.getEntityPersister( entityName ) ).getIdentifierColumnNames();

    final String innerSelect = "(select 1 from " + collectionPersister.getTableName() + " where "
        + new ConditionFragment().setTableAlias( sqlAlias ).setCondition( ownerKeys, collectionKeys ).toFragmentString()
        + ")";
View Full Code Here

      // nothing to do
    }

    @Override
    public void sessionFactoryClosed(SessionFactory sessionFactory) {
      SessionFactoryImplementor sfi = ( (SessionFactoryImplementor) sessionFactory );
      sfi.getServiceRegistry().destroy();
      ServiceRegistry basicRegistry = sfi.getServiceRegistry().getParentServiceRegistry();
      ( (ServiceRegistryImplementor) basicRegistry ).destroy();
    }
View Full Code Here

       * or its associated result set mapping
       * If the named query is a HQL query, use getReturnType()
       */
      org.hibernate.Query namedQuery = internalGetSession().getNamedQuery( name );
      //TODO clean this up to avoid downcasting
      final SessionFactoryImplementor factoryImplementor = entityManagerFactory.getSessionFactory();
      final NamedSQLQueryDefinition queryDefinition = factoryImplementor.getNamedSQLQuery( name );
      try {
        if ( queryDefinition != null ) {
          Class<?> actualReturnedClass;

          final NativeSQLQueryReturn[] queryReturns;
          if ( queryDefinition.getQueryReturns() != null ) {
            queryReturns = queryDefinition.getQueryReturns();
          }
          else if ( queryDefinition.getResultSetRef() != null ) {
            final ResultSetMappingDefinition rsMapping = factoryImplementor.getResultSetMapping(
                queryDefinition.getResultSetRef()
            );
            queryReturns = rsMapping.getQueryReturns();
          }
          else {
View Full Code Here

          @Override
          public EntityManagerFactoryImpl perform() {
            hibernateConfiguration = buildHibernateConfiguration( serviceRegistry );
            JpaSchemaGenerator.performGeneration( hibernateConfiguration, serviceRegistry );

            SessionFactoryImplementor sessionFactory;
            try {
              sessionFactory = (SessionFactoryImplementor) hibernateConfiguration.buildSessionFactory( serviceRegistry );
            }
            catch (MappingException e) {
              throw persistenceException( "Unable to build Hibernate SessionFactory", e );
            }

            if ( suppliedSessionFactoryObserver != null ) {
              sessionFactory.addObserver( suppliedSessionFactoryObserver );
            }
            sessionFactory.addObserver( new ServiceRegistryCloser() );

            // NOTE : passing cfg is temporary until
            return new EntityManagerFactoryImpl(
                persistenceUnit.getName(),
                sessionFactory,
View Full Code Here

        implicitParameterTypes.put( parameterName, javaType );
        return parameterName;
      }

      public String getCastType(Class javaType) {
        SessionFactoryImplementor factory =
            ( SessionFactoryImplementor ) entityManager.getFactory().getSessionFactory();
        Type hibernateType = factory.getTypeResolver().heuristicType( javaType.getName() );
        if ( hibernateType == null ) {
          throw new IllegalArgumentException(
              "Could not convert java type [" + javaType.getName() + "] to Hibernate type"
          );
        }
View Full Code Here

    this.attribute = attribute;
    this.persister = resolvePersister( criteriaBuilder, attribute );
  }

  private static CollectionPersister resolvePersister(CriteriaBuilderImpl criteriaBuilder, PluralAttribute attribute) {
    SessionFactoryImplementor sfi = criteriaBuilder.getEntityManagerFactory().getSessionFactory();
    return sfi.getCollectionPersister( resolveRole( attribute ) );
  }
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.