org.hibernate.Session#connection ( )源码实例Demo

下面列出了org.hibernate.Session#connection ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Knowage-Server   文件: HibernateTransaction.java
public static Connection getConnection(Session session) {
		// Hibernate 3
		return session.connection();
		
		// following code for Hibernate 4
//		try {
//			// reflective lookup to bridge between Hibernate 3.x and 4.x
//			// see http://stackoverflow.com/questions/3526556/session-connection-deprecated-on-hibernate
//			Method connectionMethod = session.getClass().getMethod(
//						"connection");
//			return (Connection) connectionMethod.invoke(session);
//		} catch (NoSuchMethodException e) {
//			throw new IllegalStateException(
//					"Cannot find connection() method on Hibernate session", e);
//		} catch (IllegalArgumentException e) {
//			throw new IllegalStateException(
//					"IllegalArgumentException invoking connection() method on Hibernate session", e);
//		} catch (IllegalAccessException e) {
//			throw new IllegalStateException(
//					"IllegalAccessException invoking connection() method on Hibernate session", e);
//		} catch (InvocationTargetException e) {
//			throw new IllegalStateException(
//					"InvocationTargetException invoking connection() method on Hibernate session", e);
//		}
	}
 
源代码2 项目: spacewalk   文件: AdvDataSourceTest.java
@Override
protected void tearDown() throws Exception {
    Session session = null;
    Connection c = null;
    Statement stmt = null;
    try {
        session = HibernateFactory.getSession();
        c = session.connection();
        stmt = c.createStatement();
        forceQuery(c, "drop table adv_datasource");
        c.commit();
    }
    finally {
        HibernateHelper.cleanupDB(stmt);
    }
}
 
源代码3 项目: spacewalk   文件: RamTest.java
private void verifyInDb(Long serverId, long ram, long swap)
       throws Exception {
       // Now lets manually test to see if the user got updated
       Session session = null;
       Connection c = null;
       ResultSet rs = null;
       PreparedStatement ps = null;
       try {
           session = HibernateFactory.getSession();
           c = session.connection();
           assertNotNull(c);
           ps = c.prepareStatement(
               "SELECT ID, RAM, SWAP FROM RHNRAM " +
"  WHERE SERVER_ID = " + serverId);
           rs = ps.executeQuery();
           rs.next();

           assertEquals(ram, rs.getLong("RAM"));
           assertEquals(swap, rs.getLong("SWAP"));
       }
       finally {
           rs.close();
           ps.close();
       }
   }
 
源代码4 项目: spacewalk   文件: TestFactoryWrapperTest.java
protected static void oneTimeTeardown() throws Exception {

        Connection c = null;
        Statement stmt = null;
        Session session = null;
        try {
            session = HibernateFactory.getSession();
            c = session.connection();
            stmt = c.createStatement();
            // Couldn't select 1, so the table didn't exist, create it
            forceQuery(c, "drop sequence persist_sequence");
            forceQuery(c, "drop table persist_test");
        }
        finally {
            HibernateHelper.cleanupDB(stmt);
        }
    }
 
源代码5 项目: olat   文件: ITCaseDailyStatHsqldbSchema.java
public void testRawInsert() throws Exception {
    final Session session = HibernateUtil.getSession();
    try {
        final Connection connection = session.connection();
        final Statement statement = connection.createStatement();
        try {
            statement.executeUpdate("insert into o_stat_daily (businesspath,resid,day,value) values ('businesspath',101,now(),202)");
            connection.commit();
        } finally {
            statement.close();
        }
    } finally {
        session.close();
    }

}
 
源代码6 项目: olat   文件: ITCaseDayOfWeekStatHsqldbSchema.java
public void testRawInsert() throws Exception {
    final Session session = HibernateUtil.getSession();
    try {
        final Connection connection = session.connection();
        final Statement statement = connection.createStatement();
        try {
            statement.executeUpdate("insert into o_stat_hourofday (businesspath,resid,hour,value) values ('businesspath',101,2,202)");
            connection.commit();
        } finally {
            statement.close();
        }
    } finally {
        session.close();
    }

}
 
源代码7 项目: olat   文件: ITCaseDayOfWeekStatHsqldbSchema.java
public void testRawInsert() throws Exception {
    final Session session = HibernateUtil.getSession();
    try {
        final Connection connection = session.connection();
        final Statement statement = connection.createStatement();
        try {
            statement.executeUpdate("insert into o_stat_dayofweek (businesspath,resid,day,value) values ('businesspath',101,2,202)");
            connection.commit();
        } finally {
            statement.close();
        }
    } finally {
        session.close();
    }

}
 
源代码8 项目: olat   文件: ITCaseDailyStatHsqldbSchema.java
public void testRawInsert() throws Exception {
    final Session session = HibernateUtil.getSession();
    try {
        final Connection connection = session.connection();
        final Statement statement = connection.createStatement();
        try {
            statement.executeUpdate("insert into o_stat_daily (businesspath,resid,day,value) values ('businesspath',101,now(),202)");
            connection.commit();
        } finally {
            statement.close();
        }
    } finally {
        session.close();
    }

}
 
源代码9 项目: olat   文件: ITCaseDayOfWeekStatHsqldbSchema.java
public void testRawInsert() throws Exception {
    final Session session = HibernateUtil.getSession();
    try {
        final Connection connection = session.connection();
        final Statement statement = connection.createStatement();
        try {
            statement.executeUpdate("insert into o_stat_hourofday (businesspath,resid,hour,value) values ('businesspath',101,2,202)");
            connection.commit();
        } finally {
            statement.close();
        }
    } finally {
        session.close();
    }

}
 
源代码10 项目: cacheonix-core   文件: TestSchemaTools.java
public void testSchemaTools() throws Exception{
	// database schema have been created thanks to the setUp method
	// we have 2 schemas SA et SB, SB must be set as the default schema
	// used by hibernate hibernate.default_schema SB
	SchemaExport se = new SchemaExport(getCfg());
	se.create(true,true);
	
	// here we modify the generated table in order to test SchemaUpdate
	Session session = openSession();
	Connection conn = session.connection();
	Statement stat = conn.createStatement();
	stat.execute("ALTER TABLE \"SB\".\"Team\" DROP COLUMN name ");
	
	// update schema
	SchemaUpdate su = new SchemaUpdate(getCfg());
	su.execute(true,true);
	
	// we can run schema validation. Note that in the setUp method a *wrong* table
	// has been created with different column names
	// if schema validator chooses the bad db schema, then the testcase will fail (exception)
	SchemaValidator sv = new SchemaValidator(getCfg());
	sv.validate();
	
	// it's time to clean our database
	se.drop(true,true);
	
	// then the schemas and false table.

	stat.execute("DROP TABLE \"SA\".\"Team\" ");
	stat.execute(" DROP SCHEMA sa ");
	stat.execute("DROP SCHEMA sb ");
	stat.close();
	session.close();
}
 
源代码11 项目: cacheonix-core   文件: TestSchemaTools.java
public void testSchemaToolsNonQuote() throws Exception{
	// database schema have been created thanks to the setUp method
	// we have 2 schemas SA et SB, SB must be set as the default schema
	// used by hibernate hibernate.default_schema SB
	SchemaExport se = new SchemaExport(getCfg());
	se.create(true,true);
	
	// here we modify the generated table in order to test SchemaUpdate
	Session session = openSession();
	Connection conn = session.connection();
	Statement stat = conn.createStatement();
	stat.execute("ALTER TABLE \"SB\".\"TEAM\" DROP COLUMN xname ");
	
	// update schema
	SchemaUpdate su = new SchemaUpdate(getCfg());
	su.execute(true,true);
	
	// we can run schema validation. Note that in the setUp method a *wrong* table
	// has been created with different column names
	// if schema validator chooses the bad db schema, then the testcase will fail (exception)
	SchemaValidator sv = new SchemaValidator(getCfg());
	sv.validate();
	
	// it's time to clean our database
	se.drop(true,true);
	
	// then the schemas and false table.

	stat.execute("DROP TABLE \"SA\".\"Team\" ");
	stat.execute(" DROP SCHEMA sa ");
	stat.execute("DROP SCHEMA sb ");
	stat.close();
	session.close();
}
 
源代码12 项目: cacheonix-core   文件: AggressiveReleaseTest.java
public void testBorrowedConnections() throws Throwable {
	prepare();
	Session s = getSessionUnderTest();

	Connection conn = s.connection();
	assertTrue( ( ( SessionImpl ) s ).getJDBCContext().getConnectionManager().hasBorrowedConnection() );
	conn.close();
	assertFalse( ( ( SessionImpl ) s ).getJDBCContext().getConnectionManager().hasBorrowedConnection() );

	release( s );
	done();
}
 
源代码13 项目: spacewalk   文件: DmiTest.java
private void verifyInDb(Long id, Map params) throws Exception {
    // Now lets manually test to see if the user got updated
    Session session = null;
    Connection c = null;
    ResultSet rs = null;
    PreparedStatement ps = null;
    try {
        session = HibernateFactory.getSession();
        c = session.connection();
        assertNotNull(c);
        ps = c.prepareStatement(
            "SELECT * FROM RHNSERVERDMI " +
            "  WHERE ID = " + id);
        rs = ps.executeQuery();
        rs.next();

        assertEquals(id.longValue(), rs.getLong("ID"));
        assertEquals(params.get("vendor"), rs.getString("VENDOR"));
        assertEquals(params.get("system"), rs.getString("SYSTEM"));
        assertEquals(params.get("product"), rs.getString("PRODUCT"));
        assertEquals(params.get("biosvendor"), rs.getString("BIOS_VENDOR"));
        assertEquals(params.get("biosversion"), rs.getString("BIOS_VERSION"));
        assertEquals(params.get("biosrelease"), rs.getString("BIOS_RELEASE"));
        assertEquals(params.get("asset"), rs.getString("ASSET"));
        assertEquals(params.get("board"), rs.getString("BOARD"));
    }
    finally {
        rs.close();
        ps.close();
    }
}
 
源代码14 项目: spacewalk   文件: ErrataCacheManagerTest.java
public void testDeleteNeededErrataCache() throws Exception {
    // create a lot of stuff to test this simple insert.
    Long oid = UserTestUtils.createOrg("testOrg" + this.getClass().getSimpleName());
    User user = UserTestUtils.createUser("testUser", oid);
    Server server = ServerFactoryTest.createTestServer(user);
    Errata e = ErrataFactoryTest.createTestErrata(oid);
    Long sid = server.getId();
    Long eid = e.getId();

    Package p = e.getPackages().iterator().next();

    // insert record into table
    int rows = ErrataCacheManager.insertNeededErrataCache(sid, eid, p.getId());
    assertEquals(1, rows);

    // verify what was inserted
    Session session = HibernateFactory.getSession();
    Connection conn = session.connection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(
            "select * from rhnServerNeededErrataCache where server_id = " +
            sid.toString());
    assertTrue(rs.next());
    assertEquals(sid.longValue(), rs.getLong("server_id"));
    assertEquals(eid.longValue(), rs.getLong("errata_id"));

    // make sure we don't have more
    assertFalse(rs.next());

    // now let's delete the above record
    rows = ErrataCacheManager.deleteNeededErrataCache(sid, eid);
    assertEquals(1, rows);

    rs = stmt.executeQuery(
            "select * from rhnServerNeededErrataCache where server_id = " +
            sid.toString());
    assertFalse(rs.next());
}
 
源代码15 项目: spacewalk   文件: DeviceTest.java
private void verifyInDb(Long id, String value) throws Exception {
    // Now lets manually test to see if the user got updated
    Session session = null;
    Connection c = null;
    ResultSet rs = null;
    PreparedStatement ps = null;
    String rawValue = null;
    try {
        session = HibernateFactory.getSession();
        c = session.connection();
        assertNotNull(c);
        ps = c.prepareStatement(
            "SELECT PROP1 FROM RHNDEVICE " +
            "  WHERE ID = " + id);
        rs = ps.executeQuery();
        rs.next();
        rawValue = rs.getString("PROP1");
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    finally {
        rs.close();
        ps.close();
    }

    assertNotNull(rawValue);
    assertEquals(value, rawValue);
}
 
源代码16 项目: lams   文件: HibernateTransactionManager.java
@Override
protected void doCleanupAfterCompletion(Object transaction) {
	HibernateTransactionObject txObject = (HibernateTransactionObject) transaction;

	// Remove the session holder from the thread.
	if (txObject.isNewSessionHolder()) {
		TransactionSynchronizationManager.unbindResource(getSessionFactory());
	}

	// Remove the JDBC connection holder from the thread, if exposed.
	if (getDataSource() != null) {
		TransactionSynchronizationManager.unbindResource(getDataSource());
	}

	Session session = txObject.getSessionHolder().getSession();
	if (this.prepareConnection && session.isConnected() && isSameConnectionForEntireSession(session)) {
		// We're running with connection release mode "on_close": We're able to reset
		// the isolation level and/or read-only flag of the JDBC Connection here.
		// Else, we need to rely on the connection pool to perform proper cleanup.
		try {
			Connection con = session.connection();
			DataSourceUtils.resetConnectionAfterTransaction(con, txObject.getPreviousIsolationLevel());
		}
		catch (HibernateException ex) {
			logger.debug("Could not access JDBC Connection of Hibernate Session", ex);
		}
	}

	if (txObject.isNewSession()) {
		if (logger.isDebugEnabled()) {
			logger.debug("Closing Hibernate Session [" + SessionFactoryUtils.toString(session) +
					"] after transaction");
		}
		SessionFactoryUtils.closeSessionOrRegisterDeferredClose(session, getSessionFactory());
	}
	else {
		if (logger.isDebugEnabled()) {
			logger.debug("Not closing pre-bound Hibernate Session [" +
					SessionFactoryUtils.toString(session) + "] after transaction");
		}
		if (txObject.getSessionHolder().getPreviousFlushMode() != null) {
			session.setFlushMode(txObject.getSessionHolder().getPreviousFlushMode());
		}
		if (!this.hibernateManagedSession) {
			session.disconnect();
		}
	}
	txObject.getSessionHolder().clear();
}
 
@Override
@SuppressWarnings("deprecation")
protected void doCleanupAfterCompletion(Object transaction) {
	HibernateTransactionObject txObject = (HibernateTransactionObject) transaction;

	// Remove the session holder from the thread.
	if (txObject.isNewSessionHolder()) {
		TransactionSynchronizationManager.unbindResource(getSessionFactory());
	}

	// Remove the JDBC connection holder from the thread, if exposed.
	if (getDataSource() != null) {
		TransactionSynchronizationManager.unbindResource(getDataSource());
	}

	Session session = txObject.getSessionHolder().getSession();
	if (this.prepareConnection && session.isConnected() && isSameConnectionForEntireSession(session)) {
		// We're running with connection release mode "on_close": We're able to reset
		// the isolation level and/or read-only flag of the JDBC Connection here.
		// Else, we need to rely on the connection pool to perform proper cleanup.
		try {
			Connection con = session.connection();
			DataSourceUtils.resetConnectionAfterTransaction(con, txObject.getPreviousIsolationLevel());
		}
		catch (HibernateException ex) {
			logger.debug("Could not access JDBC Connection of Hibernate Session", ex);
		}
	}

	if (txObject.isNewSession()) {
		if (logger.isDebugEnabled()) {
			logger.debug("Closing Hibernate Session [" + SessionFactoryUtils.toString(session) +
					"] after transaction");
		}
		SessionFactoryUtils.closeSessionOrRegisterDeferredClose(session, getSessionFactory());
	}
	else {
		if (logger.isDebugEnabled()) {
			logger.debug("Not closing pre-bound Hibernate Session [" +
					SessionFactoryUtils.toString(session) + "] after transaction");
		}
		if (txObject.getSessionHolder().getPreviousFlushMode() != null) {
			session.setFlushMode(txObject.getSessionHolder().getPreviousFlushMode());
		}
		if (!this.hibernateManagedSession) {
			session.disconnect();
		}
	}
	txObject.getSessionHolder().clear();
}
 
源代码18 项目: spacewalk   文件: ExplainPlanGenerator.java
/** Execute the task
 *  @throws IOException If the output file can't be opened.
 *  @throws SQLException if something goes wrong with the DB.
 */
public void execute() throws IOException, SQLException {
    Session session = null;
    Connection conn = null;
    try {
        session = HibernateFactory.getSession();
        conn = session.connection();
        PrintStream out = new PrintStream(new FileOutputStream(outfile));

        Collection fileKeys = ModeFactory.getKeys();

        TreeSet ts = new TreeSet(fileKeys);
        Iterator i = ts.iterator();
        while (i.hasNext()) {
            String file = (String)i.next();
            Map queries = ModeFactory.getFileKeys(file);
            if (file.equals("test_queries")) {
                continue;
            }
            out.println("\nFile:   " + file);

            Iterator q = new TreeSet(queries.keySet()).iterator();
            int count = 0;
            while (q.hasNext()) {
                Mode m = (Mode)queries.get(q.next());

                /* Don't do plans for queries that use system tables or for
                 * dummy queries.
                 */
                if (shouldSkip(m)) {
                    out.println("\nSkipping dummy query:  " + m.getName());
                    continue;
                }
                if (!(m instanceof SelectMode)) {
                    out.println("\nSkipping Write or Callable mode: " + m.getName());
                    continue;
                }
                out.println("\nPlan for " + m.getName());

                String query = "EXPLAIN PLAN " +
                    "SET STATEMENT_ID='" + QUERY_NAME + "' FOR " +
                    m.getQuery().getOrigQuery();

                // HACK!  Some of the queries actually have %s in them.
                // So, replace all %s with :rbb so that the explain plan
                // can be generated.
                query = query.replaceAll("%s", ":rbb");

                PreparedStatement ps = conn.prepareStatement(query);

                ps.execute();
                ps.close();

                // Now that we have generated the explain plan, we just
                // need to get it from the DB.
                ps = conn.prepareStatement(EXPLAIN_QUERY);
                ps.setString(1, QUERY_NAME);
                ps.setString(2, QUERY_NAME);
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    String parentId = rs.getString("explain_parent_id");
                    String id = rs.getString("explain_id");
                    String operation = rs.getString("explain_operation");

                    out.println(parentId + " " + id + " " + operation);
                }
                count++;
                rs.close();
                ps.close();
                Statement st = conn.createStatement();
                st.execute("Delete FROM plan_table where " +
                                "STATEMENT_ID='" + QUERY_NAME + "'");
                st.close();

            }
        }
        out.close();
    }
    catch (HibernateException he) {
        throw new
            HibernateRuntimeException(
                "HibernateException in ExplainPlanGenerator.", he);
    }
}
 
源代码19 项目: spacewalk   文件: ErrataCacheManagerTest.java
public void testDeleteNeededPackageCache() throws Exception {
    // create a lot of stuff to test this simple insert.
    Long oid = UserTestUtils.createOrg("testOrg" + this.getClass().getSimpleName());
    Org org = OrgFactory.lookupById(oid);
    User user = UserTestUtils.createUser("testUser", oid);
    Server server = ServerFactoryTest.createTestServer(user);
    Package pkg = PackageTest.createTestPackage(org);
    Errata e = ErrataFactoryTest.createTestErrata(oid);
    Long sid = server.getId();
    Long eid = e.getId();
    Long pid = pkg.getId();

    // insert record into table
    int rows = ErrataCacheManager.insertNeededErrataCache(
            sid, eid, pid);
    assertEquals(1, rows);

    // verify what was inserted
    Session session = HibernateFactory.getSession();
    Connection conn = session.connection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(
            "select * from rhnServerNeededPackageCache where server_id = " +
            sid.toString());
    assertTrue(rs.next());
    assertEquals(sid.longValue(), rs.getLong("server_id"));
    assertEquals(eid.longValue(), rs.getLong("errata_id"));
    assertEquals(pid.longValue(), rs.getLong("package_id"));

    // make sure we don't have more
    assertFalse(rs.next());

    // now let's delete the above record
    rows = ErrataCacheManager.deleteNeededPackageCache(sid, eid, pid);
    assertEquals(1, rows);

    rs = stmt.executeQuery(
            "select * from rhnServerNeededPackageCache where server_id = " +
            sid.toString());
    assertFalse(rs.next());
}
 
public void testIntegrityViolation() throws Exception {
	if ( getDialect() instanceof MySQLMyISAMDialect ) {
		reportSkip( "MySQL (ISAM) does not support FK violation checking", "exception conversion" );
		return;
	}
	
	SQLExceptionConverter converter = getDialect().buildSQLExceptionConverter();

	Session session = openSession();
	session.beginTransaction();
	Connection connection = session.connection();

	// Attempt to insert some bad values into the T_MEMBERSHIP table that should
	// result in a constraint violation
	PreparedStatement ps = null;
	try {
		ps = connection.prepareStatement("INSERT INTO T_MEMBERSHIP (user_id, group_id) VALUES (?, ?)");
		ps.setLong(1, 52134241);    // Non-existent user_id
		ps.setLong(2, 5342);        // Non-existent group_id
		ps.executeUpdate();

		fail("INSERT should have failed");
	}
	catch(SQLException sqle) {
		JDBCExceptionReporter.logExceptions(sqle, "Just output!!!!");
		JDBCException jdbcException = converter.convert(sqle, null, null);
		assertEquals( "Bad conversion [" + sqle.getMessage() + "]", ConstraintViolationException.class , jdbcException.getClass() );
		ConstraintViolationException ex = (ConstraintViolationException) jdbcException;
		System.out.println("Violated constraint name: " + ex.getConstraintName());
	}
	finally {
		if ( ps != null ) {
			try {
				ps.close();
			}
			catch( Throwable ignore ) {
				// ignore...
			}
		}
	}

	session.getTransaction().rollback();
	session.close();
}