作为初学者对c3p0的简单理解
来源:互联网 发布:淘宝gxg官方店特别便宜 编辑:程序博客网 时间:2024/05/29 14:00
先说说的c3p0的作用:
在我的我理解中就是在一般情况情况之后都会使用jdbc链接数据库,每次请求就会去链接一次数据库,就是重复一件事,那就是反复开关开关,人数一多就会出现卡顿,甚至将服务器搞奔溃,所以这个时候就需要的是将数据库开闭连接交个一个可以去控制这个数据库开关的中间者,当用户打开之后不会马上关闭,而是寄放在按个地方,当我们需要取得时候将那个连接取出来,从而不必再去开一个连接。
比如:就比如在一个项目的的界面某一个请求按钮,当多个用户同时去点击的时候,共同去执行这个语句,如果每一个都去开闭,一旦人数一多,数据库读去速度减慢,效率减低、搞不好服务奔溃,所以这种方式太消耗内存,同时效率低下。
所以这个时候就自然的想到了链接池,同时数据库连接池的基本思想:就是为数据库连接建立一个“缓冲池”,在需要的时候从数据库之中取出需要的数据库的连接,一旦使用完毕马上归还回去,放入“缓冲池”,如果后续还有人需要钓用的话,也可以直接调用这个链接,同时我们也可以设置连接池的连接最大数量来控制连接数量,更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。
① 编写class实现DataSource接口
② 在class构造器一次性创建10个连接,将连接保存LinkedList中
③ 实现getConnection 从 LinkedList中返回一个连接
④ 提供将连接放回连接池中方法
public class MyDataSource implements DataSource { //链表 --- 实现栈结构 privateLinkedListdataSources = new LinkedList (); //初始化连接数量 publicMyDataSource() { //一次性创建10个连接 for(int i = 0; i < 10; i++) { try { //1、装载sqlserver驱动对象 DriverManager.registerDriver(new SQLServerDriver()); //2、通过JDBC建立数据库连接 Connection con =DriverManager.getConnection( "jdbc:sqlserver://192.168.2.6:1433;DatabaseName=customer", "sa", "123"); //3、将连接加入连接池中 dataSources.add(con); } catch (Exception e) { e.printStackTrace(); } } } @Override publicConnection getConnection() throws SQLException { //取出连接池中一个连接 finalConnection conn = dataSources.removeFirst(); // 删除第一个连接返回 returnconn; } //将连接放回连接池 publicvoid releaseConnection(Connection conn) { dataSources.add(conn); } }
//查询所有用户 Public void FindAllUsers(){ //1、使用连接池建立数据库连接 MyDataSource dataSource = new MyDataSource(); Connection conn =dataSource.getConnection(); //2、创建状态 Statement state =con.createStatement(); //3、查询数据库并返回结果 ResultSet result =state.executeQuery("select * from users"); //4、输出查询结果 while(result.next()){ System.out.println(result.getString("email")); } //5、断开数据库连接 result.close(); state.close(); //6、归还数据库连接给连接池 dataSource.releaseConnection(conn); }
暂时只便于自己理解
阅读全文
0 0
- 作为初学者对c3p0的简单理解
- 一个web前端初学者对html的简单理解
- 初学者对formatter的理解
- jsp初学者对编码的理解
- 初学者对fork()函数的理解
- java初学者对递归调用的理解
- 初学者对Android的认识和理解
- 一名初学者对编程的理解
- 一个初学者对栈的理解
- 初学者对web.xml的理解
- 初学者对Struts2+Spring集成的理解
- 作为菜鸟对反射的理解
- 初学者对数据库应用的简单提取
- 一个初学者对Linux的简单认识
- 一个初学者对Linux的简单认识
- redis作为缓存的简单理解
- c3p0的简单说明
- 对RMI的简单理解
- Shell编程学习笔记
- Security Linux & Android
- c++栈,队列的使用
- JAVA是编译型的语言
- Linux_FastDFS 集群安装笔记
- 作为初学者对c3p0的简单理解
- android系统 main 函数
- 在centos 6.5中编译和安装FreeSwitch
- Android中需要知道的蓝牙相关常识
- JSON
- 简单几行js实现tab选项切换效果
- 音视频数据处理(21)--- H.264编码SPS、PPS介绍
- Android 当前Activity调节屏幕亮度
- iOS开发之禁止用户切换键盘(防止用户切换其它键盘)