zoukankan      html  css  js  c++  java
  • 获取数据库连接对象(线程ThreadLocal)

    /**
     * 负责数据库连接定义的程序类
     * 该类可以负责所有操作线程的数据库连接,利用get()方法可以获得连接对象
     */
    public class DatabaseConnection {
        private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
        private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:orcl" ;
        private static final String USER = "scott" ;
        private static final String PASSWORD = "tiger" ;
        private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>() ;
        /**
         * 负责对外部提供获取的数据库连接对象,该对象通过ThreadLocal获取,如果当前线程没有保存的连接对象,则创建新的连接
         * @return 连接对象
         */
        public static Connection getConnection() {
            Connection conn = threadLocal.get() ;    // 先判断一下在ThreadLocal里是否有连接对象
            if(conn == null) {    // 第一次使用,没有连接,没有连接应该创建一个连接
                conn = connectionDatabase() ;    // 获取连接对象
                threadLocal.set(conn);     // 将刚刚创建好的连接对象保存在ThreadLocal之中
            }
            return conn ;    // 返回连接对象
        }
        /**
         * 进行数据库的关闭处理。
         */
        public static void close() {
            Connection conn = threadLocal.get() ;
            if (conn != null) {    // 现在有连接对象了
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                } 
                threadLocal.remove();     // 从当前线程之中删除掉指定连接
            }
        }
        /**
         * 负责创建一个数据库连接对象
         * @return 数据库连接的实例化对象
         */
        private static Connection connectionDatabase() {    // 该方法只能本类调用
            Connection conn = null ;
            try {    // 一旦连接出现了错误,整个程序都无发执行
                Class.forName(DBDRIVER) ;
                conn = DriverManager.getConnection(DBURL, USER, PASSWORD) ;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn ;    // 获得数据库连接对象
        }
    }
  • 相关阅读:
    筱玛的迷阵探险(折半搜索+01字典树)
    递推
    thin mission 2021 10 8
    4级 -- 阅读
    c++——小知识
    stl
    string
    ting mission 2021.9.20
    ting mission 2021.9.27
    欧拉函数
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/7490750.html
Copyright © 2011-2022 走看看