`
robinsoncrusoe
  • 浏览: 746770 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

到底DAO是什么?为什么要有它的存在?

    博客分类:
  • JAVA
阅读更多
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..........
}

分享到:
评论

相关推荐

    泛型dao 泛型dao 泛型dao

    虽然所有人都将这种重复标识为 “代码味道”,但我们大多数都已经学会忍受它。能不能不写重复的dao 呢 ? 泛型dao,顾名思义就是一个dao可以对多个实体对象进行持久化。当应用中需要使用到上十张表时,DAO的维护变...

    Dao3.5数据库引擎

    DAO(Data Access Objects)是微软在早期开发的一种数据库访问技术,它是Microsoft Jet数据库引擎的一部分,主要用于与Access数据库的交互。DAO3.5是DAO的一个特定版本,它在Windows 95和Windows 98时代非常流行,但...

    dao包封装包

    DAO(Data Access Object)封装包是软件开发中用于处理数据访问层的一种设计模式。它将数据库操作与业务逻辑分离,使得代码更易于维护和测试。在这个"dao封装包"中,我们通常会找到一系列与数据库交互的接口和实现类...

    ADO和DAO.ppt

    ADO 是 ActiveX 数据对象(ActiveX Data Objects)的缩写,它是一种用于访问和操作数据库的技术。ADO 为开发者提供了一个强大的逻辑对象模型,以便开发者通过 OLE DB 系统接口以编程方式访问、编辑并更新各种各样的...

    iBATIS-DAO-2

    或者,有一个DAO为另一个DAO提供缓存服务。根据具体场景(如数据库性能受限或内存有限),可以选择插入缓存DAO或使用标准无缓存DAO。这些示例展示了DAO模式带来的便利性,但更重要的是其提供的安全性。DAO模式保护...

    map-dao是数据库接口包

    map-dao,顾名思义,它是一个基于Map数据结构的数据库访问对象(DAO)框架。DAO层是业务逻辑和数据存储之间的桥梁,负责处理与数据库交互的细节,从而降低系统耦合度,提高代码可读性和维护性。map-dao通过提供简洁...

    泛型通用DAO,可以很简化DAO层的代码

    然而,泛型通用DAO也存在局限性,如上述描述所示,它通常只适用于单表操作,对于复杂的关联查询和多表操作可能显得力不从心。此外,它可能无法充分利用ORM框架(如Hibernate、MyBatis等)提供的高级特性,如缓存、...

    重构DAO

    DAO模式的优点是可以降低耦合度,提高可维护性和可移植性,但它也存在一些缺点,如增加了系统的复杂度,需要更多的编码工作等。 7. 结论 DAO模式是一种非常有用的设计模式,对于基于数据库的应用系统具有非常重要...

    DAO_ACCESS.rar_access dao_access使用DAO_com.dao.dao_dao access

    在IT行业中,数据库访问对象(DAO,Data Access Object)是一种常用的设计模式,它为应用程序提供了一种与数据库交互的方式,从而解耦了业务逻辑层和数据存储层。本压缩包"DAO_ACCESS.rar"包含了关于使用DAO模式访问...

    简单DAO层示例

    在IT行业中,DAO(Data Access Object)层是软件设计模式中的一个重要组成部分,它主要用于数据库操作,隔离了业务逻辑层与数据存储层之间的交互。在这个"简单DAO层示例"中,我们将探讨DAO的设计原则、实现方式以及...

    小型web程序实例DAO

    这个"小型web程序实例DAO"是一个教学或实践项目,它演示了如何在Web应用程序中使用DAO来处理数据存取操作。下面将详细介绍DAO模式以及在Web程序中的应用。 DAO模式的核心思想是将业务逻辑与数据存取操作分离,这样...

    用DAO建立Access数据库文件

    DAO(Data Access Objects)是Microsoft Jet数据库引擎的一部分,它提供了一种编程接口,允许程序员直接与Access数据库进行交互。在VBScript、Visual Basic 6或更早版本中,DAO是与Access数据库进行操作的主要方式之...

    JDBCDemo_DAO.rar

    在本例中,可能有一个名为`DAInterface`的接口,包含如`add()`, `delete()`, `update()`, `query()`等方法。 2. **数据访问对象(Data Access Object, DAO)**:实现了DAInterface接口的具体类,负责实际的数据库...

    vb启动显示不能加载dao350.dll错误

    `dao350.dll` 文件是 DAO 的一部分,对于许多基于 VB 的应用程序来说,它是必不可少的。 #### 二、常见原因分析 1. **DLL 文件丢失或损坏**:这是最常见的原因之一。如果 `dao350.dll` 文件被意外删除或者受到病毒...

    java 里 自动生成 dao 工具的代码

    3. **自动生成DAO过程**:在使用这些工具时,首先需要配置数据库连接信息,然后指定要生成DAO的表或模式。工具会自动扫描数据库结构,创建与之对应的实体类,并生成对应的DAO接口和实现类。DAO实现类通常会包含基本...

    李兴华DAO设计模式

    DAO(Data Access Object)设计模式是一种在软件开发中用于封装对数据库操作的模式,它将数据访问逻辑与业务逻辑分离,使得系统更易于维护和扩展。在这个设计模式中,DAO作为数据层,提供了对数据库的一系列原子性...

    基于JDBC实现的DAO

    基于JDBC实现的DAO(Data Access Object)是一种在Java编程中常见的数据访问模式,它用于封装对数据库的操作,使得业务逻辑层与数据访问层解耦,提高了代码的可复用性和可维护性。以下是关于基于JDBC实现DAO的一些...

    基于DAO设计模式的验证登陆系统

    2. **DAO实现类**:接着,我们需要创建DAO实现类,例如`UserDaoImpl`,它实现了DAO接口并提供了具体的数据库操作实现。这通常涉及到SQL查询或者使用ORM框架(如Hibernate或MyBatis)来执行数据库操作。 3. **数据...

    Dao.zip_vb dao_visual basic DAO

    总的来说,DAO为VB提供了一种直观且强大的方式来处理数据库操作。虽然现在ADO(ActiveX Data Objects)和ADO.NET更常见,但DAO在某些场景下仍然有用,尤其是处理与Access数据库的集成时。通过深入了解DAO,开发者...

    HTTP请求的数据映射到封装的DAO

    DAO模式是一种软件设计模式,它提供了一个接口,用于在业务逻辑和数据库之间进行数据交换。通过使用DAO,我们可以将数据访问的细节隐藏起来,使得业务层与数据库的交互更加简洁、模块化,易于维护。 在HTTP请求中,...

Global site tag (gtag.js) - Google Analytics