3.5 단일 모드 가 데이터베이스 연결 탱크 관리 에서 의 실제 응용

4701 단어 디자인 모드
현재 대부분의 프로그램 개발 은 데이터베이스 연결 탱크 를 사용 해 야 한다. 데이터베이스 연결 탱크 의 관리 클래스 에서 단일 모드 를 사용 하여 연결 탱크 에 대한 관 리 를 실현 한다.연결 탱크 의 관리 클래스 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();
    }
}

좋은 웹페이지 즐겨찾기