1. 程式人生 > >3.5 單例模式在資料庫連線池管理中的實際應用

3.5 單例模式在資料庫連線池管理中的實際應用

目前大多數程式開發都需要用到資料庫連線池,在資料庫連線池的管理類中,就使用了單例模式,來實現對連線池的管理。這裡模擬一個連線池的 管理類Manager.java,它的示意程式碼如下:

//***Manage.java*********************
public class Manager{
    static private Manager instance;//單例模式
    private static Map connPool = new HashMap();
    //return Manager
    static synchronized public Manager getInstance
(){ if (instance == null) instance = new Manager(); return instance; } private Manager(){ init(); }//防止其他物件建立本類的例項 //根據名稱從map中獲取連線 public static Connection getConnection(String name){ Connection conn = null; try{ //從連線池中獲取連線 ConnectionPool pool = (ConnecionPoolImpl)connPool.get
(name); if (pool != null) conn = pool.getConnection(); }catch(Exception ex){ ex.printStackTrace(); }finally{ return conn; } } //將連線返回連線池 Public static void returnConnection(String name, Connection conn){ try{ ConnecitonPool pool = (ConnectionPoolImpl)connPool.get
(name); if (pool != null) pool.returnConnection(); }catch(Exception e){ e.printStackTrace(); } } //關閉所有的連線 public synchronized void release(){ try{ Set set = connPool.entrySet(); Iterator iterator =set.iterator(); while(iterator.hasNext()){ Map.Entry map = (Map.Entry)iterator.next(); ConnectionPool pool = (ConnecitonPoolImpl)map.getValue(); //關閉連線池 pool.setConnWitch("OFF"); } connPool = null; }catch(Exception e){ e.printStackTrace(); } } //建立連線池 private void createPools(){ ConnectionPool pool = new ConnectionPoolImpl(); //設定連線池大小 pool.setMaxConns(10); try{ //表示建立連線池 pool.setConnWitch("ON"); //將建立後的連線池放在Map中,用mysql表示是用於連線mysql資料庫的 connPool.put("mysql",pool); }catch(Exception e){ e.printStackTrace(); } } //初始化 private void init(){ //建立連線池 createPools(); } }