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 没有映射关系配置。
??? 配置文件将数据库抽象为“数据源”—ataSource),DAO 管理的是数据源。一个项目中可以存在多个数据源。数据源包含一个或多个连接配置,但运行时只会启用其中的一个,这样是为了方便修改配置,像 Rails 的 数据库配置文件中同时配置了开发环境、测试环境和产品环境三中数据库连接,一样的道理。
??? 连接配置有 JNDI 和 JDBC 两种类型,分别需要不同的参数。JNDI 配置需要 JNDI 服务器、InitialContextFactory 类和 JNDI 名称三个参数,而JDBC 配置需要 Driver、url、用户名和密码四个参数。密码暂时不考虑加密,采用明文的方式。下面是一个配置文件的例子:
。
待续... 1 楼 IvanLi 2007-02-27 你看看iBatis,就不会重复发明轮子了 2 楼 yiding_he 2007-02-27 iBatis 我早就看过,它还是太麻烦了。本文提到的 DAO 实际上已经完成,这篇文章(目前只是第一篇)是一个回顾性的东西,希望能对有兴趣的朋友提供一点价值。 3 楼 21jhf 2007-03-05 等待你继续......... 4 楼 retreat 2007-03-05 hb本身也可以配置多个的ds的!why?why?why? 搞不通why? 5 楼 刑天战士 2007-03-05 why not use spring instead of a home-made xml configuration? 6 楼 yiding_he 2007-03-06 当时的想法是 DAO 包最好独立,不根任何框架有联系(Log4j除外)。 7 楼 yananay 2007-03-07 你们得写事务控制,2段式提交等等,
其实用 spring + ibatis,这样的东西都很好实现。
ibatis也不是特别麻烦,有精力重复一个轮子,
不如弄一个方便ibatis的工具. 8 楼 elfer 2007-03-30 支持原创,为什么不自己多想想,要用别人的呢?? 9 楼 ak478288 2007-04-02 这不是重复的发明轮子,而是开拓思维的方式,如果不开拓思维,就不会有多样化的技术产生 10 楼 andyandyandy 2007-04-03 这是探索精神,好,支持楼主的好东西 11 楼 itroop 2007-04-03 我正在学习这个希望版主能发个配置数据源获得数据源链接访问数据库的实例工程