zoukankan      html  css  js  c++  java
  • 到底DAO是什么?为什么要有它的存在?

    Data Access Object   数据访问接口,就是访问数据库方法的 interface

    1. DAO用来封装Data Source的..就比如,Connection conn = DAOFacotry.createConnection()..
    就可以把Driver. URL. username, passpword这一些放在DAO
    以后要更改数据库的类型.比如要把MSSQL换成Oracle的话..只需要更改DAOFacory里面的createConnection()里面的Driver.URL.之类的..
    2. DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面..
    比如你要你要插入一个新的用户..那么.在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了..具体的操作DAO中实现的...
    那么对于要调用DAO的时候.我们只要知道insertUser(User)用来插入一个新的用户...而不需要知道如何实现的..

    下面form的三个字段(也就是用户要输三个注册信息)
    firstname
    lastname
    password
    分别对应数据库中的三个字段:
    firstname
    lastname
    password:password

    当用用户提交了一个注册Form后我就得到了一个fromBean,在完成了对这个formBean的验证(validate)之后我的我的控制转到Action的execute(),到了这里我有两个选择:
    *****************************************************************
    1:当有没有用到DAO时我会直接在execute()中完成这个formBean对数据库的提交下面我的伪码:
         Sesseion session=.....;
         session.save(formBean);
    *****************************************************************
    2:当有用到DAO不是下面这样呢(我自己想的错了不要打我)
      a: 先定义一个DAO
           Public class UserDao{
                  private Static Session sessioon=......;(定义一个静态的hibernate session 并initialize)
                  private String firstName;
                  private String lastName;
                  private String password;
                  public UserDao(String firstName,String lastName,String password){
                            this.firstName=firstName;
                            this.lastName=lastName;
                            this.password=password;
                   }
                   public UserDao(UserFormBean useBean){
                           this.firstName=useBean.firstName;
                             ...
                            ....
                  }
                  public void delUser(){
                        session.delete(this);
                        session.close();
                  }
                  public void addUser( ){
                         session.saveorUpdate(this);
                         session.close();
                   }
                   .....
                   ...
         }
      b:在Action中的execute()
         UserDao useDao=new UserDao(userFormBean);
         useDao.save()
    DAO一般是跟Factory和Abstract模式一起用的..
    Factory来建立数据库和定位具体的DAO(比如UserDao..CustomerDao..)..

    Abstract用来定义接口方法的比较:
    public interface UserDao {
      public insertUser(FormBean) ;
      public updateUser(FormBean);
    }
    然后就实现DAO的接口:
    public class UserDaoImpl implements UserDao {
      public insertUser(FormBean) { 
      ..//..
      session.save(UserPO);
      ..//..
      return FormBean;
      }
      public FormBean updateUser(FormBean) {
        ..//..
       session.update(UserPO);
        ..//..
      return FormBean;
      }
    }
    最后定义你的PO:
    public class UserPO {
    String firstname, lastname, password..........

  • 相关阅读:
    【JavaScript】71 厘米换算英尺英寸 (15分)
    【JavaScript PAT乙级】1001 害死人不偿命的(3n+1)猜想
    SQL注入漏洞全接触
    C# 检查字符串,防SQL注入攻击
    经典Sql注入攻击
    putty密钥登陆ssh
    微软自带的WMI查看工具
    SQL Server应用程序中的高级SQL注入
    SQL注入法攻击一日通
    三步堵死SQL注入漏洞
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5271355.html
Copyright © 2011-2022 走看看