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 ;    // 获得数据库连接对象
        }
    }
  • 相关阅读:
    windows下mysql初始密码设置
    python生成简单的验证码
    python中HTMLParser简单理解
    Windows批处理(cmd/bat)常用命令小结
    文件结束的判断和结束符的理解
    交换机与路由器
    结构体字节对齐
    有(无)符号char型及其溢出问题
    kubernetes离线包安装教程
    kubernetes(K8S)快速安装与配置集群搭建图文教程
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/7490750.html
Copyright © 2011-2022 走看看