JDBC学习笔记(三)

  • 数据库连接池

百度释义:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

  • 数据源

数据源是指数据库应用程序所使用的数据库或者数据库服务器。数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。

  • 编写标准的数据源

1 //模拟简单的数据池 2 public class SimpleConnctionPool{ 3 //存放链接对象的池 4 private static List pool = Collections.synchronizedList(new ArrayList()); 5 //最开始初始化一些连接到池中 放在静态代码块中 6 static{ 7 for(int o=0;i<10;i++){ 8 Connection conn = JdbcUtil.getConnection(); 9 pool.add(conn); 10 } 11 } 12 13 //从池中获取一个连接 注意这里获取连接实际是从池中remove出来一个 14 public static Connection getConnection(){ 15 if(pool.size()>0){ 16 return pool.remove(0); 17 }else{ 18 throw new RuntimeException("服务器忙"); 19 } 20 } 21 22 //用完后放回池中 添加回池中 23 public static void release(Connection conn){ 24 pool.add(conn); 25 } 26 } 27 }

  • 编程难点

从池中获取一个链接之后,用户用完调用_conn.close()_。应该是还回池中,不要关闭。问题:_com.mysql.jdbc.Connection.close()_智能进行关闭。

  • 解决办法
  1. 继承:_public class MyConnection extends com.mysql.jdbc.Connection{}_写驱动,但是有一个问题:有两个Oracle需要连接的时候,连接两边都需要写驱动,不现实。
  2. 利用装饰模式:



    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • What is Mathematics: Solution Chapter 3
  • What is Mathematics: Solution Chapter 2
  • What is Mathematics: Solution Chapter 1
  • A small guide to supplements: What you need to know
  • 混乱与秩序