02.Dao模式(Data Access Object)

1.单词

单词 说明
data 数据
access 访问
object 对象
entity 实体
purchase 购买
vehicle 车辆
guide 引导
invoice 货物

2.作用

DAO 位于业务逻辑和持久化数据之间,实现对持久化数据的访问,通俗来讲,就是将数据库操作都封装起来,对外提供相应的接口。

在面向对象设计过程中,有一些套路用于解决特定问题,称为模式。DAO模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离,对上层提供面向对象的数据访问接口。


3.优势

实现了两次隔离

  1. 隔离了数据访问代码和业务逻辑代码,业务逻辑代码直接调用DAO方法即可,完全感觉不到数据库的存在,分工明确,数据访问层代码变化不影响业务逻辑代码,这符合单一职能原则,降低了耦合性,提高了可复用性
  2. 隔离了不同数据库实现,采用面向接口编程,如果底层数据库变化,如由mysql变成了oracle,只要增加Dao接口的新实现类即可,原有mysql实现完全不用修改,这符合开闭原则,降低了代码的耦合性提高了代码的可拓展性和系统的可移植性。

4.DAO组成

  1. DAO接口:把对数据库的所有操作定义成抽象方法,可以提供多种实现

  2. DAO接口实现类:针对不同数据库给出DAO接口定义方法的具体实现

  3. 实体类:用于存放和传输对象数据

    特征:

    1. 实体类的属性一般使用private修饰

    2. 根据业务需要和封装性要求对实体类属性提供getter/setter方法,负责属性的读取和赋值,一般使用public修饰

    3. 对实体类提供无参构造方法,根据业务需要提供相应的有参构造方法

    4. 最好实现java.io.Serializable接口,支持序列化机制,可以将该对象转换成字节序列而保存在磁盘或在网络上传输

    5. 如果实体类实现了java.io.Serializable接口,就应该定义属性serialVersionID,解决不同版本之间的序列化问题,例如

      private static final long serialVersionUID = 2070056025923345670L;

  4. 数据库连接和关闭的工具类:避免了数据库连接和关闭代码的重复使用,方便修改


5.