Package org.hibernate.connection

Examples of org.hibernate.connection.ConnectionProvider


    s.close();

  }

  public void testUserProvidedConnection() throws Exception {
    ConnectionProvider dcp = new DriverManagerConnectionProvider();
    dcp.configure( Environment.getProperties() );
    Session s = getSessions().openSession( dcp.getConnection() );
    Transaction tx = s.beginTransaction();
    s.find("from Fo");
    tx.commit();
    Connection c = s.disconnect();
    assertTrue( c!=null );
View Full Code Here


    super(arg0);
  }

  public void testMany() throws Exception {

    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider( Environment.getProperties() );

    long hiber=0;
    long jdbc=0;

    for ( int n=0; n<20; n++ ) {

      Session s = openSession();
      s.delete("from Simple");
      s.flush();
      Simple[] simples = new Simple[n];
      Serializable[] ids = new Serializable[n];
      for ( int i=0; i<n; i++ ) {
        simples[i] = new Simple();
        simples[i].init();
        simples[i].setCount(i);
        ids[i] = new Long(i);
        s.save(simples[i], ids[i]);
      }
      s.flush();
      s.connection().commit();
      s.close();

      //allow cache to settle

      s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      Connection c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      //Now do timings

      int N=30;

      long time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        s = openSession();
        hibernate(s, simples, ids, n, "h1");
        s.close();
      }
      hiber += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        c = cp.getConnection();
        directJDBC( c, simples, ids, n, "j1" );
        cp.closeConnection(c);
      }
      jdbc += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        s = openSession();
        hibernate(s, simples, ids, n, "h2");
        s.close();
      }
      hiber += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        c = cp.getConnection();
        directJDBC( c, simples, ids, n, "j2" );
        cp.closeConnection(c);
      }
      jdbc += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        s = openSession();
        hibernate(s, simples, ids, n, "h1");
        s.close();
      }
      hiber += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        c = cp.getConnection();
        directJDBC( c, simples, ids, n, "j1" );
        cp.closeConnection(c);
      }
      jdbc += System.currentTimeMillis() - time;

    }

    System.out.println( "Hibernate: " + hiber + "ms / Direct JDBC: " + jdbc + "ms = Ratio: " + ( (float) hiber )/jdbc );

    cp.close();
    System.gc();
  }
View Full Code Here

    System.gc();
  }

  public void testSimultaneous() throws Exception {

    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider( Environment.getProperties() );

    for ( int n=2; n<4000; n*=2 ) {

      Session s = openSession();
      s.delete("from Simple");
      s.flush();
      Simple[] simples = new Simple[n];
      Serializable[] ids = new Serializable[n];
      for ( int i=0; i<n; i++ ) {
        simples[i] = new Simple();
        simples[i].init();
        simples[i].setCount(i);
        ids[i] = new Long(i);
        s.save(simples[i], ids[i]);
      }
      s.flush();
      s.connection().commit();
      s.close();

      //allow cache to settle

      s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      Connection c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      //Now do timings

      s = openSession();
      long time = System.currentTimeMillis();
      hibernate(s, simples, ids, n, "h1");
      long hiber = System.currentTimeMillis() - time;
      s.close();

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j1" );
      long jdbc = System.currentTimeMillis() - time;
      cp.closeConnection(c);

      s = openSession();
      time = System.currentTimeMillis();
      hibernate(s, simples, ids, n, "h2");
      hiber += System.currentTimeMillis() - time;
      s.close();

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      s = openSession();
      time = System.currentTimeMillis();
      hibernate(s, simples, ids, n, "h2");
      hiber += System.currentTimeMillis() - time;
      s.close();

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      System.out.println( "Objects: " + n + " - Hibernate: " + hiber + "ms / Direct JDBC: " + jdbc + "ms = Ratio: " + ( (float) hiber )/jdbc );

    }

    cp.close();
    System.gc();
  }
View Full Code Here

    System.gc();
  }

  public void testJdbcOnly() throws Exception {

    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider( Environment.getProperties() );

    for ( int n=2; n<4000; n*=2 ) {

      Session s = openSession();
      Simple[] simples = new Simple[n];
      s.delete("from Simple");
      s.flush();
      Serializable[] ids = new Serializable[n];
      for ( int i=0; i<n; i++ ) {
        simples[i] = new Simple();
        simples[i].init();
        simples[i].setCount(i);
        ids[i] = new Long(i);
        s.save(simples[i], ids[i]);
      }
      s.flush();
      s.connection().commit();
      s.close();


      //Now do timings

      Connection c = cp.getConnection();
      long time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j1" );
      long jdbc = System.currentTimeMillis() - time;
      cp.closeConnection(c);

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      System.out.println( "Objects: " + n + " Direct JDBC: " + jdbc );

    }

    cp.close();
    System.gc();
  }
View Full Code Here

    s.close();

  }

  public void testUserProvidedConnection() throws Exception {
    ConnectionProvider dcp = new DriverManagerConnectionProvider();
    dcp.configure( Environment.getProperties() );
    Session s = getSessions().openSession( dcp.getConnection() );
    Transaction tx = s.beginTransaction();
    s.find("from Fo");
    tx.commit();
    Connection c = s.disconnect();
    assertTrue( c!=null );
View Full Code Here

    super(arg0);
  }

  public void testMany() throws Exception {

    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider( Environment.getProperties() );

    long hiber=0;
    long jdbc=0;

    for ( int n=0; n<20; n++ ) {

      Simple[] simples = new Simple[n];
      Serializable[] ids = new Serializable[n];
      for ( int i=0; i<n; i++ ) {
        simples[i] = new Simple();
        simples[i].init();
        simples[i].setCount(i);
        ids[i] = new Long(i);
      }

      //allow cache to settle

      Session s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      Connection c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      //Now do timings

      int N=30;

      long time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        s = openSession();
        hibernate(s, simples, ids, n, "h1");
        s.close();
      }
      hiber += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        c = cp.getConnection();
        directJDBC( c, simples, ids, n, "j1" );
        cp.closeConnection(c);
      }
      jdbc += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        s = openSession();
        hibernate(s, simples, ids, n, "h2");
        s.close();
      }
      hiber += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        c = cp.getConnection();
        directJDBC( c, simples, ids, n, "j2" );
        cp.closeConnection(c);
      }
      jdbc += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        s = openSession();
        hibernate(s, simples, ids, n, "h1");
        s.close();
      }
      hiber += System.currentTimeMillis() - time;

      time = System.currentTimeMillis();
      for (int i=0; i<N; i++) {
        c = cp.getConnection();
        directJDBC( c, simples, ids, n, "j1" );
        cp.closeConnection(c);
      }
      jdbc += System.currentTimeMillis() - time;

    }

    System.out.println( "Hibernate: " + hiber + "ms / Direct JDBC: " + jdbc + "ms = Ratio: " + ( (float) hiber )/jdbc );

    cp.close();
    System.gc();
  }
View Full Code Here

    System.gc();
  }

  public void testSimultaneous() throws Exception {

    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider( Environment.getProperties() );

    for ( int n=2; n<4000; n*=2 ) {

      Simple[] simples = new Simple[n];
      Serializable[] ids = new Serializable[n];
      for ( int i=0; i<n; i++ ) {
        simples[i] = new Simple();
        simples[i].init();
        simples[i].setCount(i);
        ids[i] = new Long(i);
      }

      //allow cache to settle

      Session s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      Connection c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      s = openSession();
      hibernate(s, simples, ids, n, "h0");
      s.close();

      c = cp.getConnection();
      directJDBC( c, simples, ids, n, "j0" );
      cp.closeConnection(c);

      //Now do timings

      s = openSession();
      long time = System.currentTimeMillis();
      hibernate(s, simples, ids, n, "h1");
      long hiber = System.currentTimeMillis() - time;
      s.close();

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j1" );
      long jdbc = System.currentTimeMillis() - time;
      cp.closeConnection(c);

      s = openSession();
      time = System.currentTimeMillis();
      hibernate(s, simples, ids, n, "h2");
      hiber += System.currentTimeMillis() - time;
      s.close();

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      s = openSession();
      time = System.currentTimeMillis();
      hibernate(s, simples, ids, n, "h2");
      hiber += System.currentTimeMillis() - time;
      s.close();

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      System.out.println( "Objects: " + n + " - Hibernate: " + hiber + "ms / Direct JDBC: " + jdbc + "ms = Ratio: " + ( (float) hiber )/jdbc );

    }

    cp.close();
    System.gc();
  }
View Full Code Here

    System.gc();
  }

  public void testJdbcOnly() throws Exception {

    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider( Environment.getProperties() );

    for ( int n=2; n<4000; n*=2 ) {

      Simple[] simples = new Simple[n];
      Serializable[] ids = new Serializable[n];
      for ( int i=0; i<n; i++ ) {
        simples[i] = new Simple();
        simples[i].init();
        simples[i].setCount(i);
        ids[i] = new Long(i);
      }

      //Now do timings

      Connection c = cp.getConnection();
      long time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j1" );
      long jdbc = System.currentTimeMillis() - time;
      cp.closeConnection(c);

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      c = cp.getConnection();
      time = System.currentTimeMillis();
      directJDBC( c, simples, ids, n, "j2" );
      jdbc += System.currentTimeMillis() - time;
      cp.closeConnection(c);

      System.out.println( "Objects: " + n + " Direct JDBC: " + jdbc );

    }

    cp.close();
    System.gc();
  }
View Full Code Here

        try {
            SessionFactoryImplementor sfi =
                   (SessionFactoryImplementor) this.sessionFactory;

            ConnectionProvider connectionProvider = sfi.getConnectionProvider();

            connection = connectionProvider.getConnection();

        } catch (Exception e) {
            throw new IllegalStateException(
                    "Cannot get connection from session factory because: "
                    + e.getMessage(),
View Full Code Here

    String sessionFactoryName = props.getProperty(Environment.SESSION_FACTORY_NAME);
    settings.setSessionFactoryName(sessionFactoryName);

    //JDBC and connection settings:

    ConnectionProvider connections = createConnectionProvider(props);
    settings.setConnectionProvider(connections);

    //Interrogate JDBC metadata

    boolean metaSupportsScrollable = false;
    boolean metaSupportsGetGeneratedKeys = false;
    boolean metaSupportsBatchUpdates = false;
    boolean metaReportsDDLCausesTxnCommit = false;
    boolean metaReportsDDLInTxnSupported = true;
    Dialect dialect = null;
    JdbcSupport jdbcSupport = null;
    // 'hibernate.temp.use_jdbc_metadata_defaults' is a temporary magic value.
    // The need for it is intended to be alleviated with future developement, thus it is
    // not defined as an Environment constant...
    //
    // it is used to control whether we should consult the JDBC metadata to determine
    // certain Settings default values; it is useful to *not* do this when the database
    // may not be available (mainly in tools usage).
    boolean useJdbcMetadata = PropertiesHelper.getBoolean( "hibernate.temp.use_jdbc_metadata_defaults", props, true );
    if ( useJdbcMetadata ) {
      try {
        Connection conn = connections.getConnection();
        try {
          DatabaseMetaData meta = conn.getMetaData();
          log.info( "RDBMS: " + meta.getDatabaseProductName() + ", version: " + meta.getDatabaseProductVersion() );
          log.info( "JDBC driver: " + meta.getDriverName() + ", version: " + meta.getDriverVersion() );

          dialect = DialectFactory.buildDialect( props, conn );
          jdbcSupport = JdbcSupportLoader.loadJdbcSupport( conn );
          metaSupportsScrollable = meta.supportsResultSetType( ResultSet.TYPE_SCROLL_INSENSITIVE );
          metaSupportsBatchUpdates = meta.supportsBatchUpdates();
          metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();
          metaReportsDDLInTxnSupported = !meta.dataDefinitionIgnoredInTransactions();
          metaSupportsGetGeneratedKeys = meta.supportsGetGeneratedKeys();
        }
        catch ( SQLException sqle ) {
          log.warn( "Could not obtain connection metadata", sqle );
        }
        finally {
          connections.closeConnection( conn );
        }
      }
      catch ( SQLException sqle ) {
        log.warn( "Could not obtain connection to query metadata", sqle );
        dialect = DialectFactory.buildDialect( props );
      }
      catch ( UnsupportedOperationException uoe ) {
        // user supplied JDBC connections
        dialect = DialectFactory.buildDialect( props );
      }
    }
    else {
      dialect = DialectFactory.buildDialect( props );
    }

    settings.setDataDefinitionImplicitCommit( metaReportsDDLCausesTxnCommit );
    settings.setDataDefinitionInTransactionSupported( metaReportsDDLInTxnSupported );
    settings.setDialect( dialect );
    if ( jdbcSupport == null ){
      jdbcSupport = JdbcSupportLoader.loadJdbcSupport( null );
    }
    settings.setJdbcSupport( jdbcSupport );
    //use dialect default properties
    final Properties properties = new Properties();
    properties.putAll( dialect.getDefaultProperties() );
    properties.putAll( props );

    // Transaction settings:

    TransactionFactory transactionFactory = createTransactionFactory(properties);
    settings.setTransactionFactory(transactionFactory);
    settings.setTransactionManagerLookup( createTransactionManagerLookup(properties) );

    boolean flushBeforeCompletion = PropertiesHelper.getBoolean(Environment.FLUSH_BEFORE_COMPLETION, properties);
    log.info("Automatic flush during beforeCompletion(): " + enabledDisabled(flushBeforeCompletion) );
    settings.setFlushBeforeCompletionEnabled(flushBeforeCompletion);

    boolean autoCloseSession = PropertiesHelper.getBoolean(Environment.AUTO_CLOSE_SESSION, properties);
    log.info("Automatic session close at end of transaction: " + enabledDisabled(autoCloseSession) );
    settings.setAutoCloseSessionEnabled(autoCloseSession);

    //JDBC and connection settings:

    int batchSize = PropertiesHelper.getInt(Environment.STATEMENT_BATCH_SIZE, properties, 0);
    if ( !metaSupportsBatchUpdates ) batchSize = 0;
    if (batchSize>0) log.info("JDBC batch size: " + batchSize);
    settings.setJdbcBatchSize(batchSize);
    boolean jdbcBatchVersionedData = PropertiesHelper.getBoolean(Environment.BATCH_VERSIONED_DATA, properties, false);
    if (batchSize>0) log.info("JDBC batch updates for versioned data: " + enabledDisabled(jdbcBatchVersionedData) );
    settings.setJdbcBatchVersionedData(jdbcBatchVersionedData);
    settings.setBatcherFactory( createBatcherFactory(properties, batchSize) );

    boolean useScrollableResultSets = PropertiesHelper.getBoolean(Environment.USE_SCROLLABLE_RESULTSET, properties, metaSupportsScrollable);
    log.info("Scrollable result sets: " + enabledDisabled(useScrollableResultSets) );
    settings.setScrollableResultSetsEnabled(useScrollableResultSets);

    boolean wrapResultSets = PropertiesHelper.getBoolean(Environment.WRAP_RESULT_SETS, properties, false);
    log.debug( "Wrap result sets: " + enabledDisabled(wrapResultSets) );
    settings.setWrapResultSetsEnabled(wrapResultSets);

    boolean useGetGeneratedKeys = PropertiesHelper.getBoolean(Environment.USE_GET_GENERATED_KEYS, properties, metaSupportsGetGeneratedKeys);
    log.info("JDBC3 getGeneratedKeys(): " + enabledDisabled(useGetGeneratedKeys) );
    settings.setGetGeneratedKeysEnabled(useGetGeneratedKeys);

    Integer statementFetchSize = PropertiesHelper.getInteger(Environment.STATEMENT_FETCH_SIZE, properties);
    if (statementFetchSize!=null) log.info("JDBC result set fetch size: " + statementFetchSize);
    settings.setJdbcFetchSize(statementFetchSize);

    String releaseModeName = PropertiesHelper.getString( Environment.RELEASE_CONNECTIONS, properties, "auto" );
    log.info( "Connection release mode: " + releaseModeName );
    ConnectionReleaseMode releaseMode;
    if ( "auto".equals(releaseModeName) ) {
      releaseMode = transactionFactory.getDefaultReleaseMode();
    }
    else {
      releaseMode = ConnectionReleaseMode.parse( releaseModeName );
      if ( releaseMode == ConnectionReleaseMode.AFTER_STATEMENT && !connections.supportsAggressiveRelease() ) {
        log.warn( "Overriding release mode as connection provider does not support 'after_statement'" );
        releaseMode = ConnectionReleaseMode.AFTER_TRANSACTION;
      }
    }
    settings.setConnectionReleaseMode( releaseMode );
View Full Code Here

TOP

Related Classes of org.hibernate.connection.ConnectionProvider

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.