JAVA 中级 / JDBC / JDBC系列教材 (十)- 基于JDBC设计DAO的实例

详情看这里Java-JDBC DAO

0.DAO简介

DAO=DataAccess Object
数据访问对象
实际上就是运用了练习-ORM中的思路,把数据库相关的操作都封装在这个类里面,其他地方看不到JDBC的代码

JDBC之DAO设计

l DAO(数据访问对象)的主要功能是数据操作;

l 使用DAO设计模式,来封装数据库持久层的所有操作,使得低级的数据逻辑和高级的业务逻辑分离,达到解耦合的目的了;

l 在程序开发的结构中属于数据层的操作;

l 程序开发的标准架构如下:

JDBC之DAO设计

l 客户层、显示层、业务层和数据层分别介绍如下:

(1)客户层:现在都采用B/S开发架构,一般用户都使用浏览器进行访问,当然也可以采用其他程序进行访问;

(2)显示层:使用JSP/Servlet进行页面效果的显示;

(3)业务层(Business Object,业务对象):会将多个原子性的DAO操作进行组合,组合城一个完整的业务逻辑;

(4)数据层(DAO):提供多个原子性的DAO操作,如增加、修改、删除等,都属于原子性操作;

l DAO层就是编写一些具体的操作代码;

l 对于业务关联较多的系统,BO才会发挥作用;

l 如果业务操作相对简单,可以不使用BO,而完全通过DAO完成操作;

l 整个DAO中,实际上是以接口为操作标准,即客户端依靠DAO实现的接口进行操作,而服务端要将接口进行具体的实现;
 

1 : DAO接口

什么是 DAO:

        DAO(Data Access Object)是一个数据访问接口,夹在业务逻辑与数据库资源中间。

        在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。DAO中的主要操作:增删改查(CRUD)。

DAO的实现:

实现的步骤一般是:

  • 先建立模型的对象domain
  • 编写DAO接口
  • 定义DAO实现类
  • 生产DAO测试类
  • 在DAO测试类中测试方法

一般的规范是分domain包和dao包,dao包中有DAO接口,接口名为IXxxDAO,实现类为XxxDAO,创建实现类对象赋给接口,体现多态。还有一个测试类名为XxxTestDAOTest。

package jdbc;
  
import java.util.List;
 
import charactor.Hero;
  
public interface DAO{
    //增加
    public void add(Hero hero);
    //修改
    public void update(Hero hero);
    //删除
    public void delete(int id);
    //获取
    public Hero get(int id);
    //查询
    public List<Hero> list();
    //分页查询
    public List<Hero> list(int start, int count);
}

 2 : HeroDAO

设计类HeroDAO,实现接口DAO

这个HeroDAO和答案-ORM很接近,做了几个改进:
1. 把驱动的初始化放在了构造方法HeroDAO里:

 因为驱动初始化只需要执行一次,所以放在这里更合适,其他方法里也不需要写了,代码更简洁

2. 提供了一个getConnection方法返回连接
所有的数据库操作都需要事先拿到一个数据库连接Connection,以前的做法每个方法里都会写一个,如果要改动密码,那么每个地方都需要修改。 通过这种方式,只需要修改这一个地方就可以了。 代码变得更容易维护,而且也更加简洁。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值