说说 Spring DAO 的设计思想

DAO (Data Access Object )是访问数据的对象,它不但屏蔽了不一样的数据存储介质(数据库、文件或 LDAP 等),也屏蔽了具体的实现技术 。数据库

咱们只要为数据访问定义好 DAO 接口,而后使用具体技术来实现 DAO 接口,就能够平滑地切换这些不一样的实现技术啦O(∩_∩)O~单元测试

业务层经过 DAO 接口来访问数据,这样就实现了业务层与 DAO 层具体持久化技术之间的解耦,好比下图中的 RoleService 经过 RoleDao 接口来访问角色数据对象:测试

抽象出 DAO 层有这些优势:代理

  • 能够很容易构造出模拟对象,方便开展单元测试。
  • 有两种切面技术能够选择,便可以使用 JDK 动态代理,又能够使用 CGLib 动态代理。
  • 最关键的是实现了业务层与 DAO 层具体持久化技术之间的解耦。