欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据访问对象模式Word格式.docx

    • 资源ID:6838379       资源大小:268.32KB        全文页数:30页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据访问对象模式Word格式.docx

    1、execute();function update()function delete()function insert()class MemberDAO extends BaseDAOvar $_table = member;$oMember = new MemberDAO();$oMember-fetch();* 常用到的地方:* MVC中model层基类数据访问对象模式描述了如何创建透明访问数据源的对象。场景设计设计一个BaseDao基类,实现数据库操作基本的一些query,insert,update方法在实际使用的过程中,继承BaseDao,就可以直接调用基类的数据库操作方法代码:Bas

    2、eDao 数据库操作基类php /数据访问对象模式 /将数据库访问层脱离出来 作为公用的访问接口,方便用户开放,是php中常用的一种设计模式 class BaseDao private $db; public function _construct($config) $this-db = mysql_connect($configuser, $configpasshost); mysql_select_db($configdatabase, $this-db); public function query($sql) return mysql_query($sql, $this- UserDa

    3、o 用户数据表的数据操作,继承BaseDaophpview plaincopyprint?include(UserDao.php);class UserDao extends BaseDao public function addUser() $sql = INSERT INTO user (username) VALUES (initphp) return $this-query($sql);$UserDao = new UserDao;$UserDao-addUser();java数据访问对象模式-DAO模式使用数据访问对象(DAO)模式来抽象和封装所有对数据源的访问。DAO管理着与数据源

    4、的连接以便检索和存储数据。DAO实现了用来操作数据源的访问机制。数据源可以时RDBMS,LDAP,File等。依赖于DAO的业务组件为其客户端使用DAO提供更简单的接口。DAO完全向客户端隐藏了数据源实现细节。由于当低层数据源实现变化时,DAO向客户端提供的接口不会变化,所有该模式允许DAO调整到不同的存储模式,而不会影响其客户端或者业务组件。重要的是,DAO充当组件和数据源之间的适配器。(按照这个理论,如果我们UPTEL系统使用了DAO模式,就可以无缝的从ORACLE迁移到任何一个RDBMS了。梦想总是很完美的,且看看DAO模式如何实现)1.结构,图1是表示DAO模式中各种关系的类图。此主题

    5、相关图片如下:2.参与者和职责1)BusinessObject(业务对象)代表数据客户端。正是该对象需要访问数据源以获取和存储数据。2)DataAccessObject(数据访问对象)是该模式的主要对象。DataAccessObject抽取该BusinessObject的低层数据访问实现,以保证对数据源的透明访问。BusinessObject也可以把数据加载和存储操作委托给DataAccessObject。3)DataSource(数据源)代表数据源实现。数据源可以是各RDBMSR数据库,OODBMS,XML文件等等。4)valueObject(值对象)代表用做数据携带着的值对象。DataAc

    6、cessObject可以使用值对象来把数据返回给客户端。DataAccessObject也许会接受来自于客户端的数据,其中这些用于更新数据源的数据存放于值对象中来传递。3.策略1).自动DAO代码产生策略 因为每个BusinessObject对应于一个特殊的DAO,因此有可能建立BusinessObject,DAO和低层实现(比如RDBMS中的表)之间的关系(映射)。一点这些关系(映射)已经建立,我们就可以编写与应用程序有馆的代码生成的简单工具了(什么?自己写GP程序?用ORM的附带工 具自动生成不就完了,最多自己写几个Adapter,牛人就是不同,啥都要自己写.),其中的工具可以产生该应用程

    7、序需要的所有DAO代码。 如果DAO需求很复杂,我们可以采用第三方工具,其中这些工具提供对象到RDBMS数据库的关系映射(这里指的是前面提到的ORM工具,全称是 Object Relation Mapping,目前成熟的ORM工具有很多:Hibernate,OJB,Torque,TopLink等等)。这些工具通常包含GUI工具来把业务对象映射到持久性存储对象,并且因而定义中间DAO。一旦这些映射完成,这些工具会自动地生成代码,并且也许会提供其他增值功能,比如结果缓冲、查询缓冲、与应用程序集成,以及与其他第三方产品(比如分布式缓冲)地继承,等等。(增值服务:Torque提供了结果缓冲,Hiber

    8、nate提供了对Oracle数据库SQL指令的优化,OJB提供JDO API、OMDB API)2).数据访问对象的工厂策略通过调整抽象工厂和工厂方法模式,DAO模式可以达到很高的灵活度。当低层存储不会随着实现变化而变化时,该策略可以使用工厂方法模式来实现该策略。以产生应用程序需要的大量DAO。图2是这种情况下的类图。当低层存储随着实现变化而变化时,该策略可以使用抽象工厂方法模式而实现。图3是这种情况下的类图。5.结果1).启用透明性业务对象可以是使用数据源,而无须了解该数据源实现的具体细节。访问是透明的,原因是实现被隐藏在DAO的内部。2).启用更容易的迁移 DAO层使应用程序更加容易地迁移

    9、到一个不同的数据库实现。业务对象不了解低层数据实现。因而,该迁移只涉及对DAO层的变化。更进一步说,如果使用工厂策略,则有可能为每一个低层存储实现提供一个具体工厂实现。在这种情况下,迁移到不同的迁移实现意味着给应用程序提供一个新的工厂实现。3).减少业务对象中代码复杂度由于DAO管理所有的数据访问复杂性,它可以简化业务对象和其他使用DAO的客户端中的代码。所有与实现有关的代码(比如sql语句)都被包含在DAO中,而不是包含在业务对象中。这样做提高了代码的可读性,已经代码生产效率。4).把所有的数据访问集中到一个独立的层。因为所有的数据访问操作现在被委托给DAO,所有单独的数据访问层可以被看作把

    10、数据访问实现与应用程序中的其他代码相隔离的。这种集中化使应用程序更容易地维护和管理。5).不适用于容器管理的持久性由于EJB容器用容器管理的持久性(CMP)来管理实体bean,该容器会自动地服务所有的持久性存储访问。使用容器管理的实体bean的应用程序不需要DAO层,因为该应用程序服务器透明地提供该功能。然而,当需要组合使用CMP和BMP时,DAO仍旧有用处。6).添加其他层DAO会在数据客户端和数据源之间创建其他的对象层,其中该数据源需要被设计和实现以便于权衡该模式的好处。但是选择本方法也会带来额外的开销。7).需要类层次设计在使用工厂策略时,我们需要设计和实现具体工厂的层次,以及这些工厂产

    11、生的具体产品层次。如果能够确保这种灵活性,则有必要考虑这种额外的工作。这样做会增加设计的复杂性。然而,在实现该工厂策略时,你可以首先考虑工厂方法模式,然后再根据需要过渡到抽象工厂。1,什么是DAO? 数据访问对象(DAO)为数据库提供了一个抽象接口,使得开发人员无需了解数据库模式的详细信息就可以访问常见数据库操作实际上,数据访问对象实现了应用程序的低级别的数据访问逻辑与高级别的业务逻辑的分离。这种分离是非常重要的,因为它使得这两种重要的应用程序层可以彼此相对独立,从而使我们可以经常地对它们进行单独扩展。使用DAO后,发生变化的商业逻辑可以使用相同的DAO接口,同时对逻辑的修改不会影响DAO客户

    12、端只要该接口的实现是适当的。 DAO是集合,对象,方法和属性;它用对象集合来处理数据库,表,视图和索引等。使用DAO编程,可以访问并操作数据库,管理数据库的对象和定义数据库的结构等。 DAO模型是设计关系数据库结构的对象类的集合。它们提供了完成管理一个关系型数据库系统所需的全部操作的属性和方法,这其中包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等。2,DAO 设计模式:图 1 显示了应用程序和数据源之间的关系:图 1. 应用程序和数据源 在整个应用程序中使用数据访问对象(DAO)使我们可以将底层数据访问逻辑与业务逻辑分离开来。我们构建了为每一个数据源提供 GRUD (创

    13、建、读取、更新、删除)操作的 DAO 类。在本文中,我将为您介绍构建更好的 DAO 类的 DAO 实现策略和技术。更确切地说,我将讨论日志、异常处理和事务界定。您将学到如何将这三者结合到自己的 DAO 类中。本文假定您熟悉 JDBC API、SQL 和关系数据库编程。我们将以对 DAO 设计模式和数据访问对象的概述开始。DAO基础DAO 模式是标准 J2EE 设计模式之一。开发人员用这种模式将底层数据访问操作与高层业务逻辑分离开。一个典型的 DAO 实现有以下组件:1.一个 DAO 工厂类2.一个 DAO 接口3.一个实现了 DAO 接口的具体类4.数据传输对象(有时称为值对象)5.具体的 D

    14、AO 类包含访问特定数据源的数据的逻辑。dao包括5个重要部分(1)数据库连接类(2)vo类(3)dao接口类(4)dao实现类(5)dao工厂类(6)代理实现类1.数据库连接类主要功能是连接数据库,以及关闭数据库,通过数据库连接类,可大大的简便开发,在需要创建数据库时,只需创建该类的实例。并调用其中的方法就可获得数据库连接和关闭数据库,不必再进行充分操作2.vo类vo类是一个包含属性和表中完全对应的类,并在该类中提供set和get方法来设置并获得改类中的属性。一个vo类和一个数据库中的表相对应,也就是说有多少表就有多少vo类。而实例化的vo对象代表一个表中的一行数据3.DAO接口接口中定义了

    15、用户的所有操作,如增、删、改、查。不过因为是接口,所有仅仅只是定义。需要子类来实现。4.DAO实现类DAO实现类实现了dao接口,并且实现了dao接口中定义的所有方法。在dao实现中通过连接数据库进行数据库操作。一个dao实现类对应一个表,如userDao对应user表,该类中定义对该表的所有操作5.DAO工厂类在没有dao工厂类的情况下,必须通过创建DAO实现类实例才能完成数据库操作。对于后期修改非常不方便。有时要修改所有dao实现类的方法。使用dao工厂类可以很好的解决后期修改的问题,可以通过dao工厂类的一个静态方法来获得dao实现类的实例。这时如果需要替换dao实现类,只需要修改该da

    16、o工厂类中的方法代码,而不必修改所有的数据库代码。6.代理实现类:主要负责数据库的打开和关闭。并且调用真实实现类的操作。!- 输入界面 -%page contentType=text/html pageEncoding=GBK%html /head% request.setCharacterEncoding( /解决乱码问题 %bodyform action=emp_insert_do.jsp method=post empno:input type=text name=empnobr ename:ename job:job hiredate:hiredate sal:salsubmit va

    17、lue = reset/form/body/html- 后台插入数据 -%page import=info.haowei.Dao.factory.DAOFactoryjava.text.SimpleDateFormatinfo.haowei.Dao.vo.Emp% Emp emp = new Emp(); emp.setEmpno(Integer.parseInt(request.getParameter(); emp.setEname(request.getParameter(); emp.setJob(request.getParameter( emp.setHiredate(new Si

    18、mpleDateFormat(yyyy-MM-dd).parse(request.getParameter( emp.setSal(Float.parseFloat(request.getParameter( try if(DAOFactory.getIEmpDAOInstance().doCreate(emp) %h3添加成功!/h3 else添加失败! catch(Exception e) e.printStackTrace();/vo类package info.haowei.Dao.vo;import java.util.Date;public class Emp private int

    19、 empno; private String ename; private String job; private Date hiredate; private float sal; public int getEmpno() return empno; public void setEmpno(int empno) this.empno = empno; public String getEname() return ename; public void setEname(String ename) this.ename = ename; public String getJob() ret

    20、urn job; public void setJob(String job) this.job = job; public Date getHiredate() return hiredate; public void setHiredate(Date hiredate) this.hiredate = hiredate; public float getSal() return sal; public void setSal(float sal) this.sal = sal;/工厂类-dao工厂类package info.haowei.Dao.factory;import info.ha

    21、owei.Dao.dao.IEmpDAO;import info.haowei.Dao.dao.proxy.EmpDAOProxy;public class DAOFactory public static IEmpDAO getIEmpDAOInstance() return new EmpDAOProxy();/操作数据库的类package info.haowei.Dao.dbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Databas

    22、eConnection private static final String DBDRIVER = org.gjt.mm.mysql.Driver public static final String DBURL = jdbc:mysql:/localhost:3306/zhw public static final String DBUSER = root public static final String DBPASS = private Connection conn; public DatabaseConnection() try Class.forName(DBDRIVER);

    23、this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); catch (ClassNotFoundException e) catch (SQLException e) public Connection getConnection() return this.conn; public void close() if (this.conn != null) this.conn.close();/代理类.相当于回调吧package info.haowei.Dao.dao.proxy;import java.util.List;

    24、import info.haowei.Dao.dao.impl.EmpDAOImpl;import info.haowei.Dao.dbc.DatabaseConnection;import info.haowei.Dao.vo.Emp;/代理public class EmpDAOProxy implements IEmpDAO private DatabaseConnection dbc = null; private IEmpDAO dao = null; public EmpDAOProxy() this.dbc = new DatabaseConnection(); this.dao

    25、= new EmpDAOImpl(this.dbc.getConnection(); public boolean doCreate(Emp emp) boolean flag = false; if(this.dao.findById(emp.getEmpno()=null) flag = this.dao.doCreate(emp); catch (Exception e) finally dbc.close(); return flag; public List findAll(String keyword) Listall = null; all = this.dao.findAll(keyword); return all; public Emp findById(int empno) Emp emp = n


    注意事项

    本文(数据访问对象模式Word格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开