当前位置:编程学习 > JAVA >>

单例设计模式在JDBC中的应用

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

import org.junit.Test;


//并发懒汉式单例类实现jdbc工具类
public final class JDBCUtil {

 private static String url = "jdbc:mysql://localhost:3306/jdbc";
 private static String user = "root";
 private static String password = "";
 
 //延时加载
 private static JDBCUtil instance = null;
 //非延时加载
 //注意事项
 /**
  * 如果选择了非延时加载,那么单例类中的所有静态变量的声明必须放到下面语句之前,否则初始化执行了构造
  * 函数后,初始化的静态变量可能会被再次赋值,违背了我们最初的意愿,该调试带来不必要的麻烦。
  * 所以静态实例变量初始化时应该注意它们的初始化顺序。
  */
 private static JDBCUtil instance2 = new JDBCUtil();
 
 private JDBCUtil()
 {
 
 }
 
 //缩小加锁粒度,防止多次访问整个加锁方法
 public static JDBCUtil getInstance()
 {
  //懒汉式单例类,可以避免在不使用该类的时候产生实例,而只在需要的时候产生该实例
  if(instance == null)
  {
   //进行并发控制,防止发生意外情况
   synchronized(JDBCUtil.class)
   {
    if(instance == null)
    {
     instance = new JDBCUtil();
    }
   }
  }
 
  return instance;
 }
 
 public Connection getConnction() throws SQLException
 {
  return DriverManager.getConnection(url, user, password);
 }
 
 public void free(ResultSet rs,Statement st,Connection conn) throws SQLException
 {
  if(rs != null)
  {
   rs.close();
   rs = null;
  }
  if(st != null)
  {
   rs.close();
   rs = null;
  }
  if(conn != null)
  {
   rs.close();
   rs = null;
  }
 }
 


 
 
}


 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,