posts - 66,  comments - 11,  trackbacks - 0
              無論是怎樣的應用系統,都無法脫離對資源的管理和使用。而對于持久層而言,資源的合理管理和調度則顯得尤為重要。
              資源管理機制的設計對于系統整體表現往往可以產生關鍵性影響。同時,除去性能之外,良好的資源管理機制還能為系統的伸縮性、可維護性帶來相當的提升。
              Connection Pool:數據庫連接池技術帶來的優勢
              1、資源重用
              由于數據庫連接得以重用,避免了頻繁創建、釋放連接引起的大量性能開銷。在減少系統消耗的基礎上,另一方面也增進了系統運行環境的平穩性。
              2、更快的系統響應速度
              數據庫連接池在初始化過程中,往往已經創建了若干數據庫連接池置于池中備用。此時連接的初始化工作均已完成。對于業務請求處理而言,直接利用現有可用連接,避免了數據庫連接初始化和釋放過程的時間開銷,從而縮減了系統整體響應時間。
              3、新的資源分配手段
              對于多應用共享同一數據庫的系統而言,可在應用層通過數據庫連接池的配置,實現某一應用最大可用數據庫連接數的限制,避免某一應用獨占所有數據庫資源
              4、統一的連接管理,避免數據庫連接泄露
              在較為完備的數據庫連接池實現中,可根據預先的連接占用超時設定,強制收回被占用連接。從而避免了常規數據庫連接操作中可能出現的資源泄露。
             
             
          public class DBConnectionPool implements ConnectionPool{
                
          private statci Vector pool;
                
          private final int POOL_MAX_SIZE = 20;
                
          //獲取數據庫連接,如果當前池中有可用連接,則將池中最后一個返回,如果沒有,則新建一個返回
                public synchronized Connection getConnection()throws DBException{
                  
          if(pool==null){
                    pool 
          = new Vector();
                  }
                  Connection conn;
                  
          if(pool.isEmpty()){
                    conn 
          = createConnection();
                  }
          else{
                    
          int last_idx = pool.size()-1;
                    conn 
          = (Connection)pool.get(last_idx);
                    pool.remove(pool.get(last_idx));
                  }
                  
          return conn;
                }
              
          //將使用完畢的數據庫連接放回備用池中
              public synchronized void releaseConnection(Connection conn){
                
          if(pool.size()>POOL_MAX_SIZE){
                  
          try{
                    conn.close();
                  }
          catch(SQLException e){
                    e.printStackTrace();
                  }
                }
          else{
                  pool.add(conn);
                }
              }
              
          //讀取數據庫配置信息,從數據庫連接池中獲得數據庫連接
              private static Connection createConnection()throws DBException{
                Connection conn;
                
          try{
                  Class.forName(
          "oracle.jdbc.driver.OracleDriver");
                  conn 
          = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle","personal","personal");
                  
          return conn;
                }cacth(ClassNotFoundException e){
                  
          throw new DBException("ClassNotFoundException when loading JDBC Driver");
                }
              }
              }
             
             

          posted on 2009-10-07 15:26 王永慶 閱讀(156) 評論(0)  編輯  收藏 所屬分類: HIBERNATE
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關注blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辉县市| 靖安县| 泗水县| 清流县| 个旧市| 绥江县| 吉木乃县| 深泽县| 开原市| 军事| 武清区| 大同市| 合阳县| 鹰潭市| 鄂托克前旗| 武宣县| 迁安市| 南充市| 清徐县| 婺源县| 竹北市| 青浦区| 日喀则市| 法库县| 济阳县| 雅安市| 庆阳市| 双鸭山市| 崇仁县| 崇义县| 合阳县| 朝阳区| 怀安县| 集贤县| 镇赉县| 瑞金市| 和龙市| 融水| 佛冈县| 凌海市| 长白|