J2EE:DAO设计模式

J2EE框架 专栏收录该内容
17 篇文章 0 订阅



DAO设计模式:

1、DAO简介:

      DAO设计模式是属于J2EE数据层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性。

 

一个典型的DAO模式的包括的组件:

1)值对象(数据传输对象)--实体类entity

2)DAO接口:把对数据库所有的操作定义成一个个抽象的方法;

3)DAO接口具体实现类:针对不同的数据库、不同的技术来实现DAO接口定义的各种操作;

4)DAO工厂:为了统一维护、管理DAO访问对象,采取Factory设计模式来建立工厂类


2、DAO各部分详解:

DAO设计模式包括以下5个主要部分:

(1)、数据库连接类;

      数据库连接类的主要功能是连接数据库并获得连接对象,以及关闭数据库。通过数据库连接类可以大大的简化开发,在需要进行数据库连接时,只需常见该类的实例,并调用其中的方法就可以获得数据库连接对象和关闭数据库,不必再进行重复操作。例:


  1. Package com.javaweb.dao1  
  2.   
  3. Import java.sql.*;  
  4.   
  5. Public class DataBaseConnection{  
  6.   
  7.       Private final String DBDRIVER = “com.mysql.jdbc.Driver”;  
  8.   
  9.       Private final String DBURL = “jdbc:mysql://localhost:3306/javaweb”;  
  10.   
  11.       Private final String DBUSER = “root””;  
  12.   
  13.       Private final String DBPASSWORD = “585762”;  
  14.   
  15.       Private Connection conn = null;  
  16.   
  17.       Public DataBaseConnection(){  
  18.   
  19.              Try{  
  20.   
  21.                     Class.forName(DBDRIVER);  
  22.   
  23.                     This.conn =  
  24.   
  25.                                  DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);  
  26.   
  27.              }catch(Exception e){  
  28.   
  29.                     System.out.println(“加载数据库驱动失败!”);  
  30.   
  31.              }  
  32.   
  33.       }  
  34.   
  35.       Public Connection getConnection(){  
  36.   
  37.              Return conn;  
  38.   
  39.       }  
  40.   
  41.       Public void close(){  
  42.   
  43.              Try{  
  44.   
  45.                     Conn.close();  
  46.   
  47.              }catch(){  
  48.   
  49.                     System.out.println(“数据库连接关闭失败!”);  
  50.   
  51.              }  
  52.   
  53.       }  
  54.   
  55. }  

 

(2)、VO类:

      VO类是一个包含属性和表中字段完全对应的类,并在该类中提供setter和getter方法来设置并获取该类中的属性。例:

[java]  view plain copy
  1. Package com.javaweb.dao1  
  2.   
  3. Public classs User{  
  4.   
  5.       Private int userid;  
  6.   
  7.       Private String username;  
  8.   
  9.       Private String password;  
  10.   
  11.       Public int getUserid(){  
  12.   
  13.             Return userid;  
  14.   
  15.       }  
  16.   
  17.       Public void setUserid(int userid){  
  18.   
  19.              Return userid;  
  20.   
  21.       }  
  22.   
  23.       Public String getUsername(){  
  24.   
  25.             Return username;  
  26.   
  27.       }  
  28.   
  29.       Public void setUsername(String username){  
  30.   
  31.              Return username;  
  32.   
  33.       }  
  34.   
  35.       Public String getUserpassword(){  
  36.   
  37.             Return userpassword;  
  38.   
  39.       }  
  40.   
  41.       Public void setUserid(String userpassword){  
  42.   
  43.              Return userpassword;  
  44.   
  45.       }  
  46.   
  47. }  

 

(3)、DAO接口:

      DAO接口中定义了所有的用户操作,如添加记录、删除记录及查询记录等。不过因为是借口,所以仅仅是定义,需要子类实现。例:

[java]  view plain copy
  1. Package com.javaweb.dao1;  
  2.   
  3. Import java.util.*;  
  4.   
  5. Public class UserDAO{  
  6.        public void insert(User user)throw Exception;  
  7.   
  8.       Public void update(User user)throw Exception;  
  9.   
  10.       Public void delete(int userid)throw Exception;  
  11.   
  12.       Public User queryById(int userid)throw Exception;  
  13.   
  14.       Public List queryAll()throw Exception;  
  15.   
  16. }  

 

(4)、DAO实现类:

      DAO实现类实现了DAO接口,并实现了接口中定义的所有方法。

(5)、DAO工厂类:

      在没有DAO工厂类的情况下,必须通过创建DAO实现类的实例才能完成数据库操作。这时就必须知道具体的子类,对于后期的修改非常不方便。

      使用DAO工厂类,可以比较方便地对代码进行管理,而且可以很好地解决后期修改的问题,通过该DAO工厂类的一个静态方法来获取DAO实现类实例。这时如果要替换DAO实现类,只需要修改该Dao工厂类中的方法代码,而不必邀修改所有的操作数据库代码。例:

[java]  view plain copy
  1. Package com.javaweb.dao1;  
  2.   
  3. Public class DAOFactory{  
  4.   
  5.       Public static UserDAO getUserDAOInstance(){  
  6.   
  7.              Return new UserDAOImpl();  
  8.   
  9.       }  
  10.   
  11. }  
  12.    

3、使用DAO完成数据库操作:

(1)、添加记录:

(2)、更新记录:

(3)、删除记录:

(4)、查询记录:


  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值