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

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大安市| 固安县| 寻乌县| 西宁市| 东港市| 惠安县| 社旗县| 杭州市| 长海县| 星座| 平乡县| 曲麻莱县| 彭水| 且末县| 洛扎县| 南平市| 胶南市| 新乐市| 广南县| 黎城县| 洛阳市| 叙永县| 淳安县| 茌平县| 伊川县| 密云县| 莱西市| 兰考县| 会同县| 米易县| 荣昌县| 延川县| 杂多县| 若尔盖县| 靖西县| 宁津县| 丽水市| 杭锦后旗| 额济纳旗| 和政县| 滁州市|