NIUData华南理工大学无线电爱好者协会软件小组

JDBC 进阶——连接池

2016-11-13  本文已影响2038人  廖少少

本文包括

  1. 传统JDBC的缺点

  2. 连接池原理

  3. 自定义连接池

  4. 开源数据库连接池

  5. DBCP连接池

  6. C3P0连接池

  7. Tomcat内置连接池

1、传统JDBC的缺点

2、连接池原理

3、自定义连接池

4、开源数据库连接池

5、DBCP连接池

6、C3P0连接池

7、Tomcat内置连接池

使用Tomcat内置连接池的前提

JNDI技术简介

使用JNDI访问Tomcat内置连接池

  1. 将数据库驱动的jar包复制到Tomcat安装目录/lib中,这样Tomcat服务器才能找到数据库驱动。

  2. 编写访问JNDI程序,运行在Tomcat内部,所以通常是运行在Servlet、JSP中。

  3. 在Tomcat启动时,自动加载配置文件(context.xml),创建数据库连接池,该连接池由Tomcat管理。

JNDI原理.jpg
  1. demo:

     public class TomcatServlet extends HttpServlet {
     
         public void doGet(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
             try {
                 // 创建检索对象
                 Context initCtx = new InitialContext();
                 // 默认查找顶级java,名称串固定:java:comp/env
                 Context envCtx = (Context) initCtx.lookup("java:comp/env");
                 // 根据设置的名称查找连接池对象
                 DataSource ds = (DataSource) envCtx.lookup("jdbc/TestDB");
     
                 // 获得连接池中一个连接,接下来的代码和连接池无关
                 Connection conn = ds.getConnection();
                 String sql = "select * from account";
                 PreparedStatement stmt = conn.prepareStatement(sql);
                 ResultSet rs = stmt.executeQuery();
     
                 while (rs.next()) {
                     System.out.println(rs.getString("name"));
                 }
     
                 JDBCUtils.release(rs, stmt, conn);
             } catch (NamingException e) {
                 e.printStackTrace();
             } catch (SQLException e) {
                 e.printStackTrace();
             }
     
         }
     
         public void doPost(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
             doGet(request, response);
         }
     
     }
    

JDBC文集:

  1. Java 与数据库的桥梁——JDBC:http://www.jianshu.com/p/c0acbd18794c

  2. JDBC 进阶——连接池:http://www.jianshu.com/p/ad0ff2961597

  3. JDBC 进阶——元数据:http://www.jianshu.com/p/36d5d76342f1

  4. JDBC框架——DBUtils:http://www.jianshu.com/p/10241754cdd7

上一篇下一篇

猜你喜欢

热点阅读