关于OraclePoolConnection

JDBC3.0规范规定了如下的类和接口来支持数据库连接池的实现。 

  1. javax.sql.ConnectionEvent     
  2. javax.sql.ConnectionPoolDataSource     
  3. javax.sql.PooledConnection     
  4. javax.sql.ConnectionEventListener    

规范上说PooledConnection 对象表示到数据源的物理连接. 那么执行两次PooledConnection.getConnection操作获得的逻辑连接背后的物理连接是一样的.确实如此,代码验证:

 
 
  1. import java.sql.Connection;  
  2. import java.sql.PreparedStatement;  
  3. import java.sql.SQLException;  
  4.  
  5. import oracle.jdbc.pool.OracleConnectionPoolDataSource;  
  6. import oracle.jdbc.pool.OraclePooledConnection;  
  7.  
  8. public class pooledConnection {  
  9.     static OraclePooledConnection opc;  
  10.  
  11.     public static void main(String args[]) throws SQLException,  
  12.             InterruptedException {  
  13.         OracleConnectionPoolDataSource ps = null;  
  14.         ps = new OracleConnectionPoolDataSource();  
  15.  
  16.         ps.setDatabaseName("orcl");  
  17.         ps.setServerName("localhost");  
  18.         ps.setPortNumber(1521);  
  19.         ps.setDriverType("thin");  
  20.         ps.setUser("guojje");  
  21.         ps.setPassword("guojje");  
  22.  
  23.         opc = (OraclePooledConnection) ps.getPooledConnection();  
  24.  
  25.         Connection c1 = opc.getConnection();  
  26.  
  27.         c1.setAutoCommit(false);  
  28.  
  29.         PreparedStatement p1 = c1  
  30.                 .prepareStatement("insert into test values(1)");  
  31.         p1.execute();  
  32.         //这里不提交  
  33.  
  34.         Connection c2 = opc.getConnection();  
  35.           
  36.         System.out.println(c2.equals(c1));  
  37.           
  38.         c2.setAutoCommit(false);  
  39.         PreparedStatement p2 = c2  
  40.                 .prepareStatement("insert into test values(2)");  
  41.         p2.execute();  
  42.         c2.commit();//只在这里提交  
  43.  
  44.         Thread.currentThread().sleep(1000000);  
  45.  
  46.     }  

通过查看数据库存表可以,两次操作都成功. 说明c1与c2底层物理连接是一样的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值