<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    常用鏈接

    統計

    IT技術鏈接

    保險相關

    友情鏈接

    基金知識

    生活相關

    最新評論

    DAO 設計1、DAO 配置文件的設計

    沒有哪個 DAO 能夠包攬所有的數據庫管理。每種 DAO 都有各自的定位。我們公司的項目有這樣一些特點:
    • 所用數據庫都是 Oracle;
    • 使用一些已有的數據庫表;
    • 查詢語句要經過優化,DBA 要對其字斟句酌;
    • 同時連接多個數據庫。
    我們的項目大都會用到一些其他系統現有的表。有的表包含四五十個字段,而對于某些業務邏輯來講只需要查詢一兩個字段的值。DBA 強烈反對“select * ”,對關聯查詢、嵌套查詢的性能要求也很嚴格。所以像 Hibernate 這樣自動生成 SQL 語句的 DAO 自然不敢用。我們需要自己設計一個 DAO。

    本著夠用就行的原則,我們設計的 DAO (下面簡稱 DAO)先定下一個很低的目標:實現數據庫連接管理,SQL 語句由使用者提供,將查詢結果進行簡單的封裝。

    數據庫連接管理的具體設計是:
    1、使用 XML 配置文件配置數據庫連接;
    2、支持 JDBC 和 JNDI(主要針對 WebLogic 的連接池) 兩種方式創建數據庫連接;
    3、對同時連接多個數據庫進行管理;
    4、使用者不需關心數據庫連接的創建和關閉。

    對 XML 配置文件的設計:
    ??? DAO 配置文件用來配置數據庫連接。鑒于當前的目標,DAO 沒有映射關系配置。

    ??? 配置文件將數據庫抽象為“數據源”(DataSource),DAO 管理的是數據源。一個項目中可以存在多個數據源。數據源包含一個或多個連接配置,但運行時只會啟用其中的一個,這樣是為了方便修改配置,像 Rails 的 數據庫配置文件中同時配置了開發環境、測試環境和產品環境三中數據庫連接,一樣的道理。

    ??? 連接配置有 JNDI 和 JDBC 兩種類型,分別需要不同的參數。JNDI 配置需要 JNDI 服務器、InitialContextFactory 類和 JNDI 名稱三個參數,而JDBC 配置需要 Driver、url、用戶名和密碼四個參數。密碼暫時不考慮加密,采用明文的方式。下面是一個配置文件的例子:
    xml 代碼
    ?
    1. <?xml?version="1.0"?encoding="GB2312"??>??
    2. <!DOCTYPE?dao-config?PUBLIC??
    3. ????????"-//Chinacreator,?Ltd.//Data?Access?Object?Library?1.2//CN"?"dao-config.dtd">??
    4. ??
    5. <dao-config>??
    6. ??
    7. ????<datasource?name="local_mysql"?connection="default">??
    8. ????????<description>數據源1</description>??
    9. ????????<connection?name="default"?type="jdbc">??
    10. ????????????<property?name="driver"?value="com.mysql.jdbc.Driver"/>??
    11. ????????????<property?name="url"?value="jdbc:mysql://localhost/test"/>??
    12. ????????????<property?name="username"?value="user"/>??
    13. ????????????<property?name="password"?value="user"/>??
    14. ????????</connection>??
    15. ????</datasource>??
    16. ??
    17. ????<datasource?name="demo"?connection="jdbc_connection">??
    18. ????????<description>數據源2</description>??
    19. ??
    20. ????????<connection?name="jndi_connection"?type="jndi">??
    21. ????????????<description>JNDI?方式</description>??
    22. ????????????<property?name="driver"?value="weblogic.jndi.WLInitialContextFactory"/>??
    23. ????????????<property?name="server"?value="t3://127.0.0.1:7010"/>??
    24. ????????????<property?name="jndiname"?value="jndi/name"/>??
    25. ????????</connection>??
    26. ??
    27. ????????<connection?name="jdbc_connection"?type="jdbc">??
    28. ????????????<description>JDBC?方式</description>??
    29. ????????????<property?name="driver"?value="oracle.jdbc.driver.OracleDriver"/>??
    30. ????????????<property?name="url"?value="jdbc:oracle:thin:@127.0.0.1:1521:SidName"/>??
    31. ????????????<property?name="username"?value="username"/>??
    32. ????????????<property?name="password"?value="password"/>??
    33. ????????</connection>??
    34. ??
    35. ????????<connection?name="pooled_jdbc"?type="jdbc">??
    36. ????????????<description>帶連接池的?JDBC?方式</description>??
    37. ????????????<property?name="driver"?value="oracle.jdbc.driver.OracleDriver"/>??
    38. ????????????<property?name="url"?value="jdbc:oracle:thin:@172.16.168.85:1521:ora9i01"/>??
    39. ????????????<property?name="username"?value="username"/>??
    40. ????????????<property?name="password"?value="password"/>??
    41. ????????????<property?name="usepool"?value="true"/>??
    42. ????????????<property?name="poolsize"?value="2"/>??
    43. ????????</connection>??
    44. ????</datasource>??
    45. </dao-config>??



    ??? 那么使用者如何使用 DAO 執行 SQL 呢?下面是一個最簡單的例子:
    java 代碼
    1. DAO?dao?=?DAO.getDAO("demo");?//?"demo"?是數據源的名稱,見配置文件 17 行
    2. List?list?=?dao.query("select?areaname?from?tb_pub_area_code");??
    3. assertEquals("長沙",?list.get(0));??

    ??? 在這個例子中,DAO 根據配置文件找到數據源“demo”(17行),再根據數據源的 connection 屬性找到名為"jdbc_connection" 的連接配置(27行),然后連接到 "jdbc:oracle:thin:@127.0.0.1:1521:SidName" (30行)進行查詢

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

    主站蜘蛛池模板: 妞干网在线免费观看| 在线免费观看伊人三级电影| 亚洲欧美日韩中文高清www777| 亚洲福利电影在线观看| 亚洲午夜精品一区二区| 久久精品国产亚洲精品2020| 亚洲精品视频观看| 亚洲av极品无码专区在线观看| 在线亚洲高清揄拍自拍一品区| 亚洲AV无码成人专区| 亚洲中文无码永久免| 国产成人精品日本亚洲语音| 久久精品熟女亚洲av麻豆| 真正全免费视频a毛片| 曰韩无码AV片免费播放不卡| 成人无码精品1区2区3区免费看| 三年片免费高清版 | 亚洲国产综合精品中文第一| 亚洲男人天堂2022| 阿v免费在线观看| 搡女人免费免费视频观看| 免费看搞黄视频网站| 国产成人免费在线| 午夜dj免费在线观看| gogo全球高清大胆亚洲| 亚洲精品乱码久久久久久久久久久久 | 免费无码成人AV片在线在线播放| 四虎永久免费地址在线网站| 亚洲尤码不卡AV麻豆| 久久精品国产亚洲AV无码偷窥| 亚洲香蕉久久一区二区三区四区| 国产精品亚洲精品久久精品| 黄视频在线观看免费| 中文字幕视频免费| 国产美女无遮挡免费视频| 亚洲一区二区三区偷拍女厕| 亚洲精品国产情侣av在线| 欧美亚洲精品一区二区| a级毛片无码免费真人久久| 丁香花免费完整高清观看| 亚洲成?v人片天堂网无码|