获取数据库连接对象(线程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 ; // 获得数据库连接对象
}
}
获取数据库连接对象(线程ThreadLocal)的更多相关文章
- 获取数据库连接对象Connection
2018-11-04 19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...
- JDBCToolsV2:利用ThreadLocal保证当前线程操作同一个数据库连接对象。
JDBCToolsV2: 利用ThreadLocal保证当前线程操作同一个数据库连接对象. package com.dgd.test; import com.alibaba.druid.poo ...
- ThreadLocal,LinkedBlockingQueue,线程池 获取数据库连接2改进
package com.ctl.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQL ...
- LINQ数据库连接对象制造工厂
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 通过RequestContextHolder直接获取HttpServletRequest对象
问题 朋友遇到一个问题:他想在Service方法中使用HttpServletRequest的API,但是又不想把HttpServletRequest对象当作这个Service方法的参数传过来,原因是这 ...
- <一>获取数据库连接
一.JDBC_通过Driver接口获取数据库连接 1. Driver是一个接口:数据库厂商必须提供实现的接口,可以从其中 获取数据库连接. 2.JDBC URL由三部分组成,各部分用冒号隔开,格式:j ...
- 通过Driver获取数据库连接
先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包 Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据 ...
- jdbc 获取connection 对象的三种方式
获取数据库连接方法一:驱动实现类 //创建mysql的Driver对象 Driver driver=new com.mysql.jdbc.Driver(); //jdbc url 定位一个数据库: S ...
- JDBC_获取数据库连接
<span style="font-size:24px;">package src.com.jdbc.java; import java.io.IOException; ...
随机推荐
- MVVM模式的模式简介
MVVM模式简介 MVVM是Model.View.ViewModel的简写,这种模式的引入就是使用ViewModel来降低View和Model的耦合,说是降低View和Model的耦合.也可以说是是降 ...
- CEC2017 benchmark function调用接口
CEC2017 benchmark function可以从这里下载. 导师最近给了个课题让我自己研究,跟智能优化算法相关的,必不可免的要用到最新的CEC2017 benchmark function, ...
- linux用户权限 -> ACL访问控制
UGO设置基本权限: 只能一个用户,一个组和其他人 ACL设置基本权限: r.w.x 设定acl只能是root管理员用户. 相关命令: getfacl , setfacl facl权限 简介 facl ...
- Python基础二(输入与输出)
通常,一个程序都会有输入/输出,这样可以与用户进行交互.用户输入一些信息,你会对他输入的内容进行一些适当的操作,然后再输出给用户想要的结果.Python的输入/输出,我们可以用input进行输入,pr ...
- bootstrap File Input 多文件上传插件使用记录(二)删除原文件
在上一篇文章中,主要介绍了file input插件的初始化和多文件同步上传到服务器的相关配置等.这篇主要介绍file input插件的编辑等. 使用场景: 在后台管理框架中,一条数据中包含不固定的多张 ...
- win10 操作配置备忘
让程序自动启动 如果想要实现应用程序在所有的用户登录系统后都能自动启动,就把该应用程序的快捷方式放到"系统启动文件夹"里: C:\ProgramData\Microsoft\Win ...
- 多线程 or I/O复用select/epoll
1:多线程模型适用于处理短连接,且连接的打开关闭非常频繁的情形,但不适合处理长连接.线程模型默认情况下,在Linux下每个线程会开8M的栈空间,在TCP长连接的情况下,以2000/分钟的请求为例,几乎 ...
- C# 图片和二进制之间的转换
1> 图片转二进制 public byte[] GetPictureData(string imagepath){/**/////根据图片文件的路径使用文件流打开,并保存为byte[] Fil ...
- CVE-2012-4969
Microsoft Internet Explorer ‘CMshtmlEd::Exec’函数释放后使用漏洞(CNNVD-201209-394) Microsoft Internet Explorer ...
- 配置toad远程连接oracle
在oracle服务器上: C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目录 文件:listener.ora(10.144.118 ...