Open Source Repository

Home /hibernate/hibernate-3.2.4.ga | Repository Home


org/hibernate/tool/hbm2ddl/ManagedProviderConnectionHelper.java
package org.hibernate.tool.hbm2ddl;

import org.hibernate.connection.ConnectionProvider;
import org.hibernate.connection.ConnectionProviderFactory;
import org.hibernate.util.JDBCExceptionReporter;

import java.util.Properties;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * A {@link ConnectionHelper} implementation based on an internally
 * built and managed {@link ConnectionProvider}.
 *
 @author Steve Ebersole
 */
class ManagedProviderConnectionHelper implements ConnectionHelper {
  private Properties cfgProperties;
  private ConnectionProvider connectionProvider;
  private Connection connection;

  public ManagedProviderConnectionHelper(Properties cfgProperties) {
    this.cfgProperties = cfgProperties;
  }

  public void prepare(boolean needsAutoCommitthrows SQLException {
    connectionProvider = ConnectionProviderFactory.newConnectionProvidercfgProperties );
    connection = connectionProvider.getConnection();
    if needsAutoCommit && !connection.getAutoCommit() ) {
      connection.commit();
      connection.setAutoCommittrue );
    }
  }

  public Connection getConnection() throws SQLException {
    return connection;
  }

  public void release() throws SQLException {
    if connection != null ) {
      try {
        JDBCExceptionReporter.logAndClearWarningsconnection );
        connectionProvider.closeConnectionconnection );
      }
      finally {
        connectionProvider.close();
      }
    }
    connection = null;
  }
}