/**
* 负责数据库连接定义的程序类
* 该类可以负责所有操作线程的数据库连接,利用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 ; // 获得数据库连接对象
}
}

获取数据库连接对象(线程ThreadLocal)的更多相关文章

  1. 获取数据库连接对象Connection

    2018-11-04  19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...

  2. JDBCToolsV2:利用ThreadLocal保证当前线程操作同一个数据库连接对象。

    JDBCToolsV2:     利用ThreadLocal保证当前线程操作同一个数据库连接对象. package com.dgd.test; import com.alibaba.druid.poo ...

  3. ThreadLocal,LinkedBlockingQueue,线程池 获取数据库连接2改进

    package com.ctl.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQL ...

  4. LINQ数据库连接对象制造工厂

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. 通过RequestContextHolder直接获取HttpServletRequest对象

    问题 朋友遇到一个问题:他想在Service方法中使用HttpServletRequest的API,但是又不想把HttpServletRequest对象当作这个Service方法的参数传过来,原因是这 ...

  6. <一>获取数据库连接

    一.JDBC_通过Driver接口获取数据库连接 1. Driver是一个接口:数据库厂商必须提供实现的接口,可以从其中 获取数据库连接. 2.JDBC URL由三部分组成,各部分用冒号隔开,格式:j ...

  7. 通过Driver获取数据库连接

    先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包 Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据 ...

  8. jdbc 获取connection 对象的三种方式

    获取数据库连接方法一:驱动实现类 //创建mysql的Driver对象 Driver driver=new com.mysql.jdbc.Driver(); //jdbc url 定位一个数据库: S ...

  9. JDBC_获取数据库连接

    <span style="font-size:24px;">package src.com.jdbc.java; import java.io.IOException; ...

随机推荐

  1. http请求与传参

    这并不算是文章,暂时只做粗略地记录,以免忘记,因此会显得杂乱无章,随便抓了几个包和对postman截图,日后有空再完善 1.get方式 只有一种方式,那就是在url后面跟参数 2.post方式 1)表 ...

  2. 数据库-mysql事务

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...

  3. js数据绑定(模板引擎原理)

    <div> <ul id="list"> <li>11111111111</li> <li>22222222222< ...

  4. (五)动态SQL

    第一节:if条件 第二节:choose,when和otherwise条件 第三节:where条件 1.自动加上where: 2.如果where子句以and或者or开头,则自动删除第一个and或者or: ...

  5. Ajax请求中的async:false/true

    Ajax请求中的async:false/trueasync. 默认是 true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的succes ...

  6. CSDN博客专家申请成功

    又一个值得纪念的日子,上周六申请CSDN博客专家,今天中午审批通过.使用CSDN好几年了,从未想到能把博客一步步的写到这个地步. 曾经,写过一段博客,只是为了记录和分享.中间由于工作的变动和繁忙中断了 ...

  7. AARRR:数据运营模型

    一.基础知识 产品经理  <增长黑客>数据分析基础 -- 获取(Acquisition)-- 激活(Activation)-- 留存(Retention)-- 收入(Revenue)-- ...

  8. ef查询mysql数据库数据支持DbFunctions函数

    1.缘由 快下班的时候,一同事说在写linq查询语句时where条件中写两时间相减大于某具体天数报错:后来仔细一问,经抽象简化,可以总结为下面的公式: a.当前时间 减去 某表时间字段 大于 某具体天 ...

  9. Asp.net Vnext 中间件实现基本验证

    概述 本文已经同步到<Asp.net Vnext 系列教程 >中] vnext 没有 web.config 可以配置基本验证,本文使用中间件实现基本验证 实现 通过Startup(启动类) ...

  10. Asp.net Vnext 模块化实现

    概述 本文已经同步到<Asp.net Vnext 系列教程 >中] 在程序中实现模块化可以加快开发效率,通过替换模块实现升级. 架构 vnext 没有 Virtualpathprovide ...