什么是DAO

本文详细介绍了DAO(Database Access Object)模式的定义及应用目的。通过将数据控制层与业务逻辑层分离,实现系统的清晰分层,便于开发与维护。此外,还讨论了DAO模式对于单元测试的重要性,并提供了一个高效实现DAO层的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DAO(Database Access Object),顾名思义就是数据库访问接口,也就是和数据库打交道操作对象.而这些操作往往可以从系统的业务逻辑中独立出来,从而使系统中的数据库操作变得统一和简单化(相对于数据库具体操作混合业务逻辑操作),而且也可以使得系统在和数据库交互出错时,更快的定位问题.
总而言之,我觉得,使用DAO的目的是,将数据控制层和业务逻辑控制层分离开,这样不仅更有利于项目开发时的功能划分和工作分配(负责数据层的人员只注重数据操作,负责业务逻辑控制的开发人员只关注业务逻辑,使得各人的分工简化明晰),在项目维护时也更容易定位和解决问题.

我对DAO层的理解是:DAO层只对数据访问(一般是访问数据库)进行管理,不涉及具体业务逻辑。

使用DAO很重要的一个原因是 单元测试。分开的service和dao可以单独测试。dao做数据库继承测试,service做mock模拟测试。


如果你的service里涉及除dao之外的业务逻辑,比如计算这个那个之类的,分离测试的好处就非常非常明显。

现在我就建一个实现常用接口的DAO Class,通过spring配置不同的DAO Object,90%以上的DAO Class都不用写了.做了一个30个table的App,只写了2个DAO Class.
既可保持层次架构,又简便.

### JavaWeb 中 DAO 的概念及作用 #### 定义 数据访问对象 (Data Access Object, DAO) 是一种用于封装对数据库或其他持久存储机制的访问的设计模式。通过这种模式,可以将数据访问逻辑与业务逻辑分离,从而提高代码的可维护性和重用性[^3]。 #### 主要职责 DAO 层的主要职责是对底层的数据源执行 CRUD(创建、读取、更新和删除)操作,并向服务层提供干净简洁的方法接口。这使得应用程序其他部分不需要关心具体的数据库交互细节,只需要调用 DAO 提供的方法即可完成所需的操作。 #### 实现方式 通常情况下,在 Java Web 应用程序中会采用 MyBatis 或 Hibernate 这样的 ORM 框架来简化 DAO 的编写工作。这些框架允许开发者定义映射关系并自动生成大部分 SQL 语句,减少了手动编码的工作量。例如: ```java public interface UserDAO { void insertUser(User user); List<User> getAllUsers(); } ``` 以及对应的 XML 映射文件 `UserDAOMapper.xml`: ```xml <mapper namespace="com.example.dao.UserDAO"> <insert id="insertUser" parameterType="User"> INSERT INTO users(name, email) VALUES(#{name}, #{email}) </insert> <select id="getAllUsers" resultType="User"> SELECT * FROM users; </select> </mapper> ``` 这样做的好处是可以让不同的模块专注于各自的任务——控制器负责接收 HTTP 请求并将它们转发给适当的服务;而服务则依赖于 DAO 来获取或保存必要的信息到数据库中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值