The important thing in life is to have a great aim , and the determination

          常用鏈接

          統計

          IT技術鏈接

          保險相關

          友情鏈接

          基金知識

          生活相關

          最新評論

          DAO 設計3、數據庫連接的管理



          DAO 類是線程安全的,它的所有操作都通過調用 DbExecutor 對象來執行。每次操作,DAO 都會從 DbExecutorFactory 中獲得一個 DbExecutor 對象。DAO 要做的就是保證做完操作之后都要執行 DbExecutor 對象的 close 方法。

          DbExecutor 是一個接口,它的大部分方法和 DAO 差不多。它包含一個數據庫連接,當連接關閉時,DbExecutor 對象的生命周期也就結束了。OraDbExecutor 是 DbExecutor 的一個實現。

          OraDbExecutor.java - 構造函數
          1. /**
          2. * 構造函數
          3. *
          4. * @param dsName 數據源名稱
          5. * @param conn 數據庫連接
          6. */
          7. public OraDbExecutor(String dsName, Connection conn) {
          8. this.dsName = dsName;
          9. this.connection = conn;
          10. }


          當創建 DbExecutor 實例時,DbExecutorFactory 先從 ConnectionFactoryBuilder 獲得一個 ConnectionFactory 對象,然后從ConnectionFactory 獲取一個數據庫連接,用來創建 DbExecutor。當然,連接每個數據庫的 ConnectionFactory 對象只有一個。

          ConnectionFactoryBuilder.java - build()
          1. /**
          2. * 創建一個數據庫連接工廠
          3. *
          4. * @param dsName 配置文件中的 datasource 名稱
          5. *
          6. * @return 數據庫連接工廠
          7. *
          8. * @throws ConfigErrorException 如果配置文件不正確
          9. */
          10. publicsynchronized ConnectionFactory build(String dsName) throws ConfigErrorException {
          11. // 先從緩存中查找
          12. if (factoryCache.get(dsName) == null) {
          13. DataSourceCollection sources = Configurator.getDataSources();
          14. DataSource ds = sources.getDataSource(dsName);
          15. if (ds == null) {
          16. thrownew ConfigErrorException("沒有找到數據源 " + dsName);
          17. }
          18. factoryCache.put(dsName, buildFactory(ds));
          19. }
          20. return (ConnectionFactory) factoryCache.get(dsName);
          21. }

          posted on 2007-03-15 23:25 鴻雁 閱讀(265) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 田阳县| 巴林右旗| 靖边县| 麻江县| 沙坪坝区| 鸡东县| 介休市| 平昌县| 金塔县| 离岛区| 巴彦淖尔市| 阳朔县| 正安县| 松潘县| 株洲县| 沾化县| 栾川县| 穆棱市| 马公市| 周至县| 荔浦县| 临江市| 景泰县| 铜梁县| 莱芜市| 彩票| 曲松县| 莲花县| 库车县| 黎川县| 九寨沟县| 四子王旗| 金溪县| 西昌市| 乌苏市| 东乡族自治县| 峨眉山市| 西乡县| 德格县| 长宁县| 丹江口市|