博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于OraclePoolConnection
阅读量:5861 次
发布时间:2019-06-19

本文共 1420 字,大约阅读时间需要 4 分钟。

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底层物理连接是一样的.

本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/844555

转载地址:http://bvgjx.baihongyu.com/

你可能感兴趣的文章
Idea字体美化终极解决方案
查看>>
是maven项目在指定JDK版本下编译和运行
查看>>
封装的一些常用的javascript函数
查看>>
NIO案例
查看>>
log4j的MDC
查看>>
java.util.Calendar的用法
查看>>
OCR文字识别可以帮助PDF文档处理吗
查看>>
ABBYY FineReader 12 识别文档语言有哪些
查看>>
BarTender打印额外字符的方法
查看>>
Mysql 错误日志
查看>>
iOS 暴力消除警告 不执行警告 定义未使用等...
查看>>
iOS开发 使用Xcode自带的Leaks:动态的检测内存泄露
查看>>
ubuntu faience图标推荐
查看>>
扫雷(windows xp winmine)内存读取
查看>>
grails使用经验笔记
查看>>
nagios+centreon总结之第一章——nagios+centreon简介
查看>>
apache开启gzip压缩
查看>>
iptables备份及firewalld操作介绍
查看>>
Iptables
查看>>
MySQL 主从复制
查看>>