`
小女墙
  • 浏览: 111223 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

DAO

    博客分类:
  • JAVA
阅读更多

DAO:data access object,数据访问对象


软件开发过程中 系统的设计开发一般分层设计,一般分为 表现层 控制层 业务逻辑层 数据层,以此实现软件层次结构分离 各司其职。


DB层”,这一层存放了链接数据库的字符串,以及JdbcTemplate类,直接访问数据库。因为在java中,执行SQL语句的函数按照返回值可以分为三类,所以在这一层定义了JDBC模版类(JdbcTemplate),每一次使用操作数据库时都要执行这一层的三个方法其中一个。

DAO层(Data Access Object数据访问对象层)”,这一层存放了SQL语句(并不执行SQL语句,语句传给DB层执行)。这一层调用“DB层”访问数据库,它只知道“DB层”的存在,不知道数据库的存在。

SERVICE层”,业务逻辑层,因为一个业务的实现,并不是一次数据库访问就可以完成的,所以这一层通过N次调用“DAO层的方法”实现业务逻辑,它只知道“DAO层”的存在,不知道“DB层”和数据库的存在。


ACTION层”,调用业务逻辑层,根据返回的结果,控制JSP页面显示。它只知道业务层的存在。这一层是入侵者的攻击平台。

Form层”,把用户POST提交的信息封装成Form对象,经过验证后提交给ACTION层处理。

JSP层”(显示层),这一层是最终显示给用户看的页面,同时也是入侵者的攻击平台。

用户通过访问ACTION层,自动会发生:“ACTION调用SERVICE,SERVICE调用DAO,DAO调用DB,DB执行SQL语句返回结果给 DAO,DAO返回给SERVICE,SERVICE返回给ACTION,ACTION把数据显示到JSP里返回给用户”。

 

 

 

简单的例子就是,在业务逻辑层中出现了jdbc等等底层的访问操作数据库的代码,这样对代码的分层结构是很不合理的,而且耦合性也很厉害,更不利于后期开发,所以我们把访问和操作数据库的这些代码单独分离出来,简单的说 dao层 就是对数据库中数据的增删改查等操作封装在专门的类里面,在业务逻辑层中如果要访问数据的时候,直接调用该dao类(包括了如何访问数据库和数据的增删改查等等代码),就可以返回数据,而不需要再在业务逻辑层中写这些代码。
分享到:
评论
1 楼 楚之异人 2012-08-11  
这篇文章非常好!应该是用户直接访问FORM层,然后自动会发生:ACTION调用SERVICE层;SERVICE调用DAO层;DAO层调用DB层;然后DA层直接访问数据库,依次返回给DAO层、SERVICE层、ACTION层、JSP层。

相关推荐

    泛型dao 泛型dao 泛型dao

    Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...

    J2EE之DAO设计模式

    暴露给客户端的DAO接口在低层数据源的实现发生改变时并不会随着改变,所以这种设计模式使得DAO可以适应不同的数据储存方式类型而不影响客户端和商业组件.最主要的, DAO还在组件和数据源之间扮演着协调者的角色. DAO...

    如何重构DAO模式

    使用数据访问对象(DAO,Data Access Object)模式来抽象和封装所有对数据源的访问。DAO管理着与数据源的连接以便检索和存储数据。可以降低商业逻辑层和数据访问层的耦合度,提高应用的可维护性和可移植性。 由于...

    dao3.5数据库安装文件

    DAO数据库安装文件。

    一个很好的通用泛型dao(含源码)

    为什么我们要使用通用DAO接口呢,因为我们的数据库操作无非是增删改查,CRUD操作,我们不需要为每个实体去编写一个dao接口,对于相似的实体操作可以只编写一个通用接口,然后采用不同的实现! DAO已经成为持久层...

    dao包封装包

    dao封装包

    9.DAO数据库操作演示(Visual C++编程 源代码)

    9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示...

    Dao Jet数据库引擎

    Dao Jet数据库引擎,当WINDOWS中没有带这个数据库引擎时,可以选择手动安装 Dao Jet数据库引擎

    C#特性标签实现通用Dao层

    C#特性标签实现通用Dao层C#特性标签实现通用Dao层C#特性标签实现通用Dao层

    dao自动生成工具 基于ibator 只需要设置少量参数就能 创建dao层所有类

    ibator-huoniao通过它你可以通过配置少量参数,通过一键生成dao层的全部文件,能够应付对dao层的所有操作 产物包括: 1. pojo文件 2. dao接口类 3. dao接口实现类文件 4. ibatis sql map文件 5. 数据库查询时...

    DAO设计模式DAO设计模式

    DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式

    dao层基类dao层基类dao层基类

    dao层基类dao层基类dao层基类dao层基类dao层基类

    php mysql Dao基本操作

    $my = new MysqlDao(); echo $my->pdo_delete(MODULE.'_network_list', array('id' => 17, 'uniacid' => 6)); $sql = 'select * from '.tablename(MODULE.'_network_list').' where uniacid=? and end_time<? ...

    DAO3.5 支持64位Win7

    在 64 位 Win7 系统下安装某些老款建筑预算软件需要部署 DAO,故做了此安装包分享给大家

    Struts+DAO登陆Struts+DAO登陆

    Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆

    一个通用的dao和service包

    service接口 ... ... ... public interface EmployeeService extends Entity...这样只需要向dao中注入pojo的完整包名,你就能拥有一个pojo的dao,并且在你的service接口和实现类里不用写一句代码. 轻松持久化你的entity pojo

    IDEA逆向生成POJO/DAO/MAPPER 《Generate POJOs.groovy》

    IDEA自带的插件Generate POJOs.groovy 比较简陋,不能生成完整的dao/mapper,切生成的POJO没有注解。没有统一格式化,所以在此基础上进行了扩展能够简单的生成pojo/dao/mapper. 使用时选择目录后会在改目录下生成...

    dao jet数据库引擎

    有些计算机缺失这个文件,导致有些软件运行不起来,出现“无法对DAO/Jet db引擎进行初始化”的问题,下载后解压,并运行起来就可以了。

    dao 1.0 source code

    dao 1.0 source code for download

Global site tag (gtag.js) - Google Analytics