码迷,mamicode.com
首页 > 数据库 > 详细

获取JDBC Connection单例模式

时间:2014-12-12 19:22:01      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:connection   singleton   

package Base;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//不可被继承的工具类
public final class JdbcUtilsSingleton {

	//私有化成员变量,防止影响其他类共有的变量
	private  String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
	private  String username = "root";
	private  String password = "123456";
	
	private static JdbcUtilsSingleton instance=null;
	//私有化构造函数,确保不被外部实例化
	private JdbcUtilsSingleton(){
	}
	
	/**
	 * 考虑到并发需要枷锁
	 * @return
	 */
	public static JdbcUtilsSingleton getInstance(){
		if(instance == null){
			synchronized(JdbcUtilsSingleton.class){
				if(instance == null){
					instance = new JdbcUtilsSingleton();
				}
			}
		}
		return instance;
	}
	//加载JVM时只创建一次连接
	static{
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	//获取连接
	public Connection getConnection() throws SQLException{
		return DriverManager.getConnection(url, username, password);
	}
	
	//规范释放资源方法
	public void Free(ResultSet rs,Statement stmt,Connection conn){
		try{
			if(rs != null)
				rs.close();
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			try{
			if(stmt != null)
				stmt.close();
			}catch(SQLException ex){
				ex.printStackTrace();
			}finally{
				try{
					if(conn != null)
						conn.close();
				}catch(SQLException em){
					em.printStackTrace();
				}
			}
		}
	}
}


单例模式要点总结:

    1.私有化instance类变量和构造函数,确保不被外部实例化对象,保证唯一单一实例。

    2.考虑到程序并发处理需要加锁

    3.通过唯一入口静态方法获取实例:getInstance()

本文出自 “爱咖啡” 博客,请务必保留此出处http://4837471.blog.51cto.com/4827471/1589424

获取JDBC Connection单例模式

标签:connection   singleton   

原文地址:http://4837471.blog.51cto.com/4827471/1589424

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!