传统两级模式的问题:
1、所有的JDBC代码写在JSP页面之中,维护困难。
2、JSP中不应该使用任何sql包,即:不能在JSP中直接使用java.sql.*,原因:JSP只关注于数据的显示,
而不关心数据从哪里来,或向哪里存储。
3、所有的数据库操作代码最好使用PreparedStatement
J2EE的组件层次:
客户端 —>表示层(*.jsp/servlet)—>业务层—>数据层—>数据库
就是在客户端发送一个请求到servlet,servlet调用相应的javabean,javabean从数据层对数据库进行操作。
DAO属于J2EE数据层的操作:
即:在DAO中封装了一个表在一个项目中所应该具有的全部操作。
设计思想:
首先需要规定整个模块之中对person表的全部操作:
*增加 *修改 *删除 *按ID查询 *查询全部 *模糊查询
按以上要求,规定出操作此张表的标准,之后只要针对不同的数据库实现这些标准即可。
在JAVA中只要通过接口可以定义接口 —>DAO定义的就是一个接口。
案例:
说明:比如说一个图书馆,图书馆可以增加书籍。如果要在增加之前,应该把一本书给图书馆才可以。
插入—>针对对象插入
对象—>VO、TO、POJO(值对象、传输对象、最根本的JAVA对象)即:最包含属性和setter和getter方法的类
一、封装数据库连接
二、定义对象的属性和数据库中的表中的字段完全对应
三、定义DAO接口
四、定义好接口之后,要定义出接口的具体实现类,具体实现DAO接口中对数据库表中的一切操作。
定义一个数据库连接类,由数据库连接类统一管理数据库连接。
五、前台JSP可以直接通过VO对象间接访问数据库
六、使用工厂类Factory,使前台(JSP页面)不用关心后台具体的子类
前台JSP代码:PersonDao dao = new PersonImpl()
就可以改为 PersonDao dao = DAOFactory.getDAOInstance();