java oracle 连接池_oracle数据库连接池配置
大家好,又见面了,我是你们的朋友全栈君。
频繁的创建和销毁数据库连接即消耗系统资源又使得程序效率低下,在这种情况下,出现了使用数据库连接池的方法,类似于线程池,初期创建一定数量的连接供应用程序使用,当使用完成后将其归还给连接池而不是销毁,这样有效的提高了资源利用率,下面分享一种简单的创建连接池的方法:
1.首先,我们新建一个maven工程,并且导入ojdbc , dbcp , junit三个包待用
2.然后,我们在src/main/resources目录下创建一个文件db,properties用以存放一些配置参数等,以后更换数据库密码什么的只需要改此文件而不是改动代码。
db.properties文件代码如下
# connection parameters
driver=oracle.jdbc.driver.OracleDriver (数据库驱动类)
url=jdbc:oracle:thin:@localhost:1521:xe
//jdbc协议:数据库子协议:主机:端口/连接的数据库
user=system
pwd=root
#这个没什么说的,用户名密码,自己创建数据库的时候都设置过
# datasouce parameters
initSize=1
maxSize=2
#最大连接数,这个不用管
driver的选取:
以上就算是准备工作
下面开始敲代码了
在src/main/java 下创建一个包,再创建一个类,名字自己取
补充两点1.Properties类专门用来读取properties文件 2.Properties类本质上就是Map
编写如下图代码读取我们在db.properties文件中设置的参数,注意,这里我们创建的是连接池,这些内容
我们只需要加载一次,所以写在static代码块中
代码:
package util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
public class DBUtil {
//连接池对象
private static BasicDataSource ds;
//加载参数
static{
Properties p = new Properties();
try {
p.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
String driver = p.getProperty("driver");
String url = p.getProperty("url");
String user = p.getProperty("user");
String pwd = p.getProperty("pwd");
String initSize = p.getProperty("initSize");
String maxSize = p.getProperty("maxSize");
//创建连接池
ds = new BasicDataSource();
//设置参数
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(user);
ds.setPassword(pwd);
ds.setInitialSize(new Integer(initSize));
ds.setMaxActive(new Integer(maxSize));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("加载配置文件失败",e);
}
}
/*
* 以上就是将配置文件里的参数全部读取出来,接下来就是要
* 写两个方法,一个是用来创建连接的,一个关闭连接
* */
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
public static void close(Connection conn){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭连接失败",e);
}
}
}
}
写完之后,基本工作就完成了,下面我们在src/test/resources下创建一个测试类来检测我们的代码
这里我们使用的是Junit做单元测试
代码:
package test;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.Test;
import util.DBUtil;
public class Testdb {
@Test
public void test01(){
Connection conn = null;
try {
conn = DBUtil.getConnection();
System.out.println("OK!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBUtil.close(conn);
}
}
}
运行上述代码得到如图所示的结果说明我们的代码是正确的
并且控制台输出OK!
如果出现错误请检查数据库驱动类是否填写正确,数据库服务是否正常启动,
第一次写文章,纯手打,不喜勿喷谢谢,请各位大神多多指教
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193222.html原文链接:https://javaforall.cn
相关文章
- Oracle数据库系统健康状态检查(oracle健康检查)
- 探索Oracle数据库中的触发器类型(oracle触发器类型)
- Oracle中熟悉的触发器类型(oracle触发器类型)
- 利用 Oracle 触发器实现数据库自动化处理(oracle触发器类型)
- 成功插入Oracle数据库:一步一步指南(插入oracle数据库)
- 技术Oracle数据库维护的常用技术(oracle常用维护)
- 探索Oracle数据库的新表空间功能(oracle新表空间)
- 轻松应对:Oracle数据库切换完整指南(oracle数据库切换)
- Oracle可视化查看链接信息(oracle查看链接)
- Oracle数据库:卓越优势体现(oracle的优势)
- Oracle数据库实现字符串统计的多种方案(oracle字符统计)
- Linux系统快速安全地登录Oracle数据库(linux登录oracle数据库)
- Oracle数据库全字段比较实现一体化解决方案(oracle全字段比较)
- Oracle数据库中的写冲突分析(oracle写冲突)
- 比较两大数据库DB2和Oracle(db2 oracle区别)
- C语言与Oracle结合提升任务执行效率(c oracle队列)
- 复制Oracle数据库一步一步走(copy oracle)
- Oracle数据库的可扩展性细节讨论(fp数据库 oracle)
- Oracle数据库中的约束分类(oracle中约束分为)
- Oracle数据库锁表的时机(oracle什么时候锁表)
- Oracle数据库中根据金额排名的统计结果(oracle中按金额排名)
- Oracle中两数相乘的算法技巧(oracle两个数据相乘)
- 美国领先企业创新Oracle技术助力(oracle usa)