本文为个人学习和总结所用。
一:简介
DAO (DataAccessobjects 数据存取对象) 是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。
DAO模式是一种结构模式,它允许我们使用抽象API将应用程序/业务层与持久层(通常是关系数据库,但它可以是任何其他持久性机制)隔离开来。
其实际为一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作。在实际的开发中,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中。用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口,在逻辑上该类对应一个特定的数据存储。
DAO模式实际上包含了两个模式,一是Data Accessor(数据访问器),二是Data Object(数据对象),前者要解决如何访问数据的问题,而后者要解决的是如何用对象封装数据。
二:组成
(一)组成
- 1、DAO接口: 把对数据库的所有操作定义成抽象方法,可以提供多种实现。
- 2、DAO 实现类: 针对不同数据库给出DAO接口定义方法的具体实现。
- 3、实体类:用于存放与传输对象数据。
- 4、数据库连接和关闭工具类: 避免了数据库连接和关闭代码的重复使用,方便修改。
(二)示例
1.接口
public interface userDao {
// 查询所有用户
List<User> findAllUsers() throws Exception;
}
2.实现类
public class userDaoImpl
extends BaseDao
implements userDao {
// 查询所有用户
public List<User> findAllUsers() throws Exception {
Connection conn=BaseDao.getConnection();
String sql="select * from user";
PreparedStatement stmt= conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<User> userList = new ArrayList<User>();
while(rs.next()) {
User user = new User(
rs.getInt("id"),
rs.getString("name"),
rs.getDate("birthday")
);
userList.add(pet);
}
BaseDao.closeAll(conn, stmt, rs);
return userList;
}
}
3.实体类
public class User {
private Integer id;
private String name;
private Date birthday;
// 以下set和get方法就不写了
}
注:更多深度知识点和案例在以后学习中慢慢写吧。