DAO设计模式

作者: 17f6ebdcf197 | 来源:发表于2018-08-01 00:43 被阅读14次

DAO(Data Access Objects)设计模式属于JavaEE数据层的操作。

使用DAO设计模式可以简化代码量和提高程序的可移植性

解决问题:

在JDBC操作数据库,都是在JSP页面中写JDBC代码,或者借助于Java Bean实现,这样导致JSP页面中包含大量的HTML代码和Java代码,显示和功能代码混合在一起,难以维护,程序可读性差。

使用DAO设计模式可以很好解决上述问题,JSP页面仅用来做表现层。

图-1

   DAO的整体设计流程:

JSP -> 工厂模式 -> 具体实现类 -> 完成数据库操作

DAO设计模式组成部分    :

DemoLearn

|-DAO接口

|-DAO实现类

|-DAO工厂类

|-VO类/数据传递对象(值对象)

|-数据库连接类


DAO接口

DAO接口中定义了所有的用户操作(增、删、改、查...);

package DAO_Learn;

import code0729.User;

import java.util.List;

public interface UserDAO {

//增加操作

        public void insert(User user)throws Exception;

//修改操作

        public void update(User user)throws Exception;

//删除操作

        public void delete(User user)throws Exception;

//按ID查询操作

        public User queryById(int userid)throws Exception;

//查询全部

        public List queryAll()throws Exception;

//模糊查询

        public List queryByLike(String keyword)throws Exception;

}

*************************************************************************************

DAO实现类

DAO实现类实现了DAO接口,在DAO实现类中通过【数据库连接类】操作数据库。

package DAO_Learn;

import java.sql.Connection;

import java.sql.PreparedStatement;

/**

* 引入usebean下的Person类

* */

public class UserDAOImpl implements UserDAO{

public  void delete(int userid)throws Exception

    {

String sql ="delete from user where userid=?";

PreparedStatement preparedStatement =null;

DataBaseConnection dataBaseConnection =null;

//下面是针对数据库的操作

        try

        {

//连接数据库

            dataBaseConnection =new DataBaseConnection();

preparedStatement = dataBaseConnection.getConnection().prepareStatement(sql);

preparedStatement.setInt(1,userid);

// 进行数据库操作

            preparedStatement.executeUpdate();

preparedStatement.close();

}

catch (Exception e)

{

throw new Exception("操作出现异常");

}

finally

        {

dataBaseConnection.close();

}

}

}

*************************************************************************************

DAO工厂类

DAO工厂类通过自身的一个静态方法来获得实现类的实例,有了DAO工厂类,只需要修改DAO工厂类中的方法代码。

好处:

          用户不用知道底层的具体实现,只要操作接口;同时实现前台和后台的分离(当添加新的功能时只要在DAO接口中添加抽象方法,然后在DAOImpl中实现用户所增加的功能,就能完成用户功能的需求)

package DAO_Learn;

public class DAOFactory {

public static UserDAO getUserDAOInstance()

{

return new UserDAOImpl();

}

}

*************************************************************************************

VO类/数据传递对象(值对象)

VO类是一个包含属性与表中字段完全对应的类,在该类中提供【setter and getter】方法来获取该类中的属性。

package DAO_Learn;

public class User {

//用户userID

        private int userId;

//用户名userName

        private String userName;

//用户密码password

        private String password;

//setter and getter

    public int getUserId() {

return userId;

}

public void setUserId(int userId) {

this.userId =userId;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName =userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password =password;

}

}

*************************************************************************************

数据库连接类

数据库连接类(JDBC)通过连接数据库获得连接对象以及关闭数据库...

简便开发,在进行数据库连接时,只要创建该类的实例即可获得数据库连接对象,不必再进行重复操作。

package DAO_Learn;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class DataBaseConnection {

//数据库驱动以及url

    private static final String JDBC_Driver ="com.mysql.jdbc.Driver";

private static final String DB_URL ="jdbc:mysql://localhost:3306/javaweb?encodingCharacter=utf8&useSSL=true";

//数据库用户以及密码

    private static final String USER ="root";

private static final String PWD ="mysqladmin";

private Connection connection;

public DataBaseConnection() {

try {

//注册连接数据库驱动

            Class.forName(JDBC_Driver);

this.connection =DriverManager.getConnection(DB_URL,USER,PWD);

}

catch (ClassNotFoundException e)

{

e.printStackTrace();

}

catch (SQLException e)

{

e.printStackTrace();

}

}

public Connection getConnection()

{

return this.connection;

}

public void close()

{

try

        {

this.connection.close();

}

catch (SQLException e)

{

e.printStackTrace();

}

}

}

*************************************************************************************

相关文章

  • DAO设计模式

    DAO(Data Access Objects)设计模式属于JavaEE数据层的操作。 使用DAO设计模式可以简化...

  • spring整合hibernate(一)

    1.Spring提供的dao支持: DAO模式是标准的java EE设计模式,DAO模式的核心思想是所有的数据库访...

  • DAO设计模式

    DAO设计模式包括(1) 每个数据库中的表对应的POJO类(2) 每个POJO对象对应一个DAO接口,进行对数据表...

  • DAO设计模式

    介绍 DAO功能是数据操作.客户发送数据到显示层,显示层发送数据到业务层,业务发送数据到数据层,数据层进行持久化....

  • 设计模式之DAO模式

    简介 DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据...

  • 对查询出来的数据数据进行分页

    采用DAO层设计模式详解1.dao包:1.通用Dao类(实现增删改查)2.EmpDao(实现Emp的一些操作)3....

  • Web学习笔记 - 第004天

    分层结构 表示层业务层持久层 持久层设计模式 --- DAO模式 Data Access Object = Dat...

  • Active Record小结

    DAO Data Access Object,数据访问对象 DAO是一个软件设计的指导原则,在核心J2EE模式中是...

  • DAO设计模式,学习笔记

    理解分层 前台:显示层和控制层 后台业务层:业务层和数据层,int ,double等业务层用基本类型,数据层用包装...

  • JDBC的DAO设计模式

    在javaEE中,java类的属性通过getter和setter来定义,get(或set)方法去除get(set)...

网友评论

    本文标题:DAO设计模式

    本文链接:https://www.haomeiwen.com/subject/kjwkvftx.html