`
yiding_he
  • 浏览: 446129 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

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. public synchronized 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. throw new ConfigErrorException("没有找到数据源 " + dsName);
  17. }
  18. factoryCache.put(dsName, buildFactory(ds));
  19. }
  20. return (ConnectionFactory) factoryCache.get(dsName);
  21. }
分享到:
评论
2 楼 pdw2009 2007-08-23  
用到了缓存吧,
1 楼 bluepopopo 2007-06-15  
javastudy 写道
public synchronized ConnectionFactory build(String dsName) throws ConfigErrorException {

为什么设成线程安全的
有factoryCache的get和set嘛 要用同步

相关推荐

    Dao Jet数据库引擎

    Jet引擎以其强大的数据处理能力,支持多种数据类型和索引机制,以及对ODBC(开放数据库连接)的兼容性而知名。 Dao Jet数据库引擎使用DAO(数据访问对象)作为其主要的数据访问接口。DAO是Microsoft开发的一种编程...

    Dao3.5数据库引擎

    DAO(Data Access Objects)是微软在早期开发的一种数据库访问技术,它是Microsoft Jet数据库引擎的一部分,主要用于与Access...在处理类似问题时,了解DAO的基本原理和操作步骤,对解决MCGS数据库连接问题至关重要。

    Dao金山词霸数据库代码

    1. 数据库连接管理:这部分代码负责建立和维护与数据库的连接,包括连接池的设计,以优化资源使用,避免频繁的创建和销毁连接。 2. SQL执行:这是数据库操作的核心,Dao金山词霸会提供一系列的函数或类,用于执行...

    dao3.5数据库安装文件

    1. **数据库连接**:DAO提供了一种直接与数据库进行通信的方法,允许开发者创建连接、打开和关闭数据库,以及执行查询和事务处理。 2. **对象模型**:DAO 3.5包含一系列的对象,如Database、TableDef、QueryDef、...

    DAO_TEST.rar_delphi dao_数据库连接池

    2. **TDatabase组件**:在Delphi中,TDatabase组件是DAO或BDE(Borland Database Engine)的基础,用于管理数据库连接和会话。 3. **TTable、TQuery和TDataset组件**:这些组件是DAO在Delphi中的具体操作对象,...

    基于数据库连接池的D A O模式在J 2 E E应用系统中的实现

    具体而言,文章重点介绍了在设计一个面向物流企业的电子商务系统——包括在线购物和配送管理系统时,如何实现数据库连接池和DAO模式。 #### 逻辑结构与功能结构 ##### 逻辑结构 从逻辑结构来看,系统被分为四个...

    使用C3P0连接池和DButils进Dao模式的数据库操作

    在Java开发中,数据库操作是不可或缺的一部分,而高效、稳定的数据库连接管理对于应用程序的性能至关重要。C3P0和DBUtils是两个非常实用的工具,它们可以帮助我们更好地管理和执行数据库操作。下面将详细介绍如何...

    Orlc数据库连接类dao

    Orlc数据库连接类DAO是针对特定数据库(如Oracle)设计的DAO实现,它提供了便捷的数据库连接管理和操作功能。使用此类可以简化数据库操作的复杂性,提高代码的可读性和可维护性。其主要优势包括: 1. **连接管理**...

    使用DAO访问数据库的例子(189KB)

    因此,可以使用连接池(如C3P0、HikariCP或Apache DBCP)来管理和复用数据库连接。 在测试DAO时,我们通常会使用单元测试框架,如JUnit,配合Mockito等工具模拟数据库环境,避免实际访问数据库,提高测试效率和准确...

    Java Dao设计模式操作数据库

    Java DAO(Data Access Object)设计模式是一种常用的软件设计模式,用于在Java应用程序中与数据库进行交互。DAO模式的主要目的是为了实现数据访问层的隔离,它将业务逻辑与数据存储细节分离开来,使得代码更加模块...

    基于对话框的MFC以DAO形式连接ACCESS数据库的电子词典

    开发这样的应用,不仅需要熟悉MFC和DAO的使用,还需要对数据库设计有一定的理解,以确保数据的有效管理和检索。 总结起来,基于对话框的MFC电子词典利用DAO连接Access数据库,实现了用户友好的交互方式和高效的数据...

    dao_界面登录数据库导入导出_

    4. 错误处理:在登录注册过程中,需要处理各种可能的异常情况,如网络问题、数据库连接失败、SQL语法错误等,确保良好的用户体验。 至于"数据库导入导出",这通常是指备份和恢复数据库的过程。在游戏开发中,可能...

    工厂模式dao模式操作数据库小例子

    通过DAO,我们可以封装SQL查询、事务管理等细节,使代码更具通用性和可扩展性。 在这个“工厂模式DAO模式操作数据库小例子”中,我们可以预期看到以下结构: 1. 数据库连接配置:通常会有一个配置类或.properties...

    通用数据库连接库C#版

    6. **数据访问对象(DAO)模式**:可能采用了DAO设计模式,抽象出数据库操作,使得业务逻辑与数据访问层分离,提高代码的可测试性和可维护性。 7. **异步操作**:支持异步编程模型,利用C#的async/await关键字,...

    JAVA Dao 数据库操作

    综上所述,Java DAO模式涉及的内容广泛,包括设计模式、JDBC、数据库连接池、SQL操作、事务管理、结果集处理、预编译SQL、ORM框架的使用以及异常处理等。对于初学者来说,理解并熟练掌握这些知识点,将有助于构建...

    用DAO操作数据库--数据库操作

    DAO采用了面向对象的设计思想,将对数据库的操作分为多个层次,每一层次都对应一个特定的对象。这些对象共同构成了DAO对象模型,具体包括但不限于: - **DBEngine对象**:代表DAO引擎本身,用于创建和管理其他DAO...

    struts+dao实现的登录(连接数据库)

    **DAO设计模式** DAO模式是一种软件设计模式,它提供了一种隔离应用程序和数据存储的方式。DAO类封装了对数据库的所有操作,使得业务逻辑代码无需直接与数据库交互,降低了耦合度。这样做的好处是,如果数据库结构...

    通用java数据库连接程序

    它可能会封装连接池的概念,连接池可以高效地管理数据库连接,避免频繁创建和销毁连接带来的性能开销。 3. **db.properties**: 这是一个配置文件,通常用于存储数据库连接的相关信息,如数据库URL、用户名、密码...

Global site tag (gtag.js) - Google Analytics