java数据库连接池详细操作
请问JAVA中如何实现数据库连接池,不要ORM映射框架提供的连接池。最好可以提供一个视频教程。十分感谢。...
请问JAVA中如何实现数据库连接池,不要ORM映射框架提供的连接池。最好可以提供一个视频教程。十分感谢。
展开
推荐于2017-10-01
展开全部
是自己编的 可以引用 连接池思想就是这个啊
不过你可以下载 已经编好的连接池 上面有API 自己可以按照这个思想 就回用 了;
import java.io.FileInputStream;
public class ConnectionPool{
private Vector<Connection> pool;
private String url;
private String username;
private String password;
private String driverClassName;
// 连接池的大小,也就是连接池中有多少个数据库连接。
private int poolSize = 1;
private static ConnectionPool instance =null;
//私有的构造方法,禁止外部创建本类的对象。
// 使用了设计单子模式
private ConnectionPool(){
init();
}
// 返回当前连接池的一个对象
public static ConnectionPool getInstance(){
if(instance==null){
instance=new ConnectionPool();
}
return instance;
}
//连接池初始化方法,读取属性文件的内容,建立连接池中的初始连接
private void init(){
pool= new Vector<Connection>(poolSize);
addConnection();
}
//返回连接到连接池中
public synchronized void release(Connection conn){
pool.add(conn);
}
// 关闭连接池中的所有数据库连接
public synchironized void closePool(){
for(int i=0;i<pool.size();i++){
try{
((Connection)pool.get(i)).close();
}catch(SQLExcepiton e){
e.printStachTrace();
}
pool.remove(i);
}
}
/**
* 返回连接池中的一个数据库连接
*/
public synchronized Connection getConnection(){
if(pool.size()>0){
Connection conn = pool.get(0);
pool.remove(conn);
return conn;
}else{
return null;
}
}
// 在连接池中创建初始设置的的数据库连接
private void addConnection(){
Connection conn = null;
for (int i=0;i<poolSize;i++){
try{
Class.forName(driverClassName);
conn=java.sql.Drivermanager.getConnection(url,username,password);
pool.add(conn);
}catch(ClassNotFoundException e){
e.printStachTrace();
}catch(){}
}
}
}
不过你可以下载 已经编好的连接池 上面有API 自己可以按照这个思想 就回用 了;
import java.io.FileInputStream;
public class ConnectionPool{
private Vector<Connection> pool;
private String url;
private String username;
private String password;
private String driverClassName;
// 连接池的大小,也就是连接池中有多少个数据库连接。
private int poolSize = 1;
private static ConnectionPool instance =null;
//私有的构造方法,禁止外部创建本类的对象。
// 使用了设计单子模式
private ConnectionPool(){
init();
}
// 返回当前连接池的一个对象
public static ConnectionPool getInstance(){
if(instance==null){
instance=new ConnectionPool();
}
return instance;
}
//连接池初始化方法,读取属性文件的内容,建立连接池中的初始连接
private void init(){
pool= new Vector<Connection>(poolSize);
addConnection();
}
//返回连接到连接池中
public synchronized void release(Connection conn){
pool.add(conn);
}
// 关闭连接池中的所有数据库连接
public synchironized void closePool(){
for(int i=0;i<pool.size();i++){
try{
((Connection)pool.get(i)).close();
}catch(SQLExcepiton e){
e.printStachTrace();
}
pool.remove(i);
}
}
/**
* 返回连接池中的一个数据库连接
*/
public synchronized Connection getConnection(){
if(pool.size()>0){
Connection conn = pool.get(0);
pool.remove(conn);
return conn;
}else{
return null;
}
}
// 在连接池中创建初始设置的的数据库连接
private void addConnection(){
Connection conn = null;
for (int i=0;i<poolSize;i++){
try{
Class.forName(driverClassName);
conn=java.sql.Drivermanager.getConnection(url,username,password);
pool.add(conn);
}catch(ClassNotFoundException e){
e.printStachTrace();
}catch(){}
}
}
}
2013-07-31
展开全部
因为工作需要要使用到连接池,所以拜读了互联网上众多前辈的文章,学了不少经验,这里想做一个小结,加上自己的想法和在一起,希望能给大家一些帮助。 目的: 消除数据库频繁连接带来的开销和瓶颈。 解决方案: 不过多的限制用户的使用,既不能太多的要求用户按规定的方法得到和使用数据库连 尽量保持用户的习惯 目前的很多方法都是要求用户只能按规定方法使用连接,不能使用直接关闭数据连接的方法。解决办法就是使用代理类,来中间解决。可以参考 http://www-900.ibm.com/developerWorks/cn/java/l-connpoolproxy/index.sHTML 能维护连接的正常状态 要求用户按规定的方法得到和使用数据库连 尽量保持用户的习惯 目前的很多方法都是要求用户只能按规定方法使用连接,不能使用直接关闭数据连接的方法。解决办法就是使用代理类,来中间解决。可以参考 http://www-900.ibm.com/developerWorks/cn/java/l-connpoolproxy/index.sHTML 能维护连接的正常状态 因为针对数据库连接创建的资源,如果不能及时的释放,就会影响下一次数据连接的使用。例如在sql 2k中,一个连接不同创建多条Statement否则操作时会有数据连接占线的异常,所以必须在归还连接以后释放这些资源
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询