struts+dao+hibernate模式

静下心来好好的写写这方面的东西了!整体的小组都在学习这个架构的东西,还是来一一介绍:

    struts:在这个架构中,struts的角色完全的被前台化了,就是说这是一个更广泛意义上的mvc架构,只是在不同的层间采用了不同的架构和技术,struts本身的配置和使用并没有什么好学习的地方,在我的第一篇文章中已经阐述的很清楚了,懂得那些就基本OK了!但是他的功能强大之处在于标签的使用,因为真正jsp的应用最好的方式是不要在页面上出现任何的java代码,如何做到,那就是struts的标签和EL表达式。

    dao模式:其实就是一系列的接口,工厂的引入是为了适应不同的数据库,因为仅仅使用dao而没有使用工厂模式,那么我们在struts中要使用dao的实现是就需要这样的定义:假如我的是userDao

    userDao ud  = new userDaoImpl();

    (顺便说一下,大家看出这个是什么了吗!? 这叫做类的多态,面向对象最不好理解的一个特性。)

    也就是说我必须知道实现是什么我才能做事情,这个实现是依赖于数据库的,一旦我们更改了数据库,那么好所有的子类全都要改,我们要该的不是别的!而是成千上万个页面上的方法,这显然不符合我们面向对象的思想。

    那么如何来解决这个问题 就是使用工厂

    工厂来找dao,比如:

    public static userDao getuserDaoinstance()

{

    return new userDaoImpl();

}

 

在struts中调用的时候就好说了!就是

DAOFactory.getuserDaoinstance().***();

大家可以很明显的看到,前台的struts已经没有了具体的实现类,因为他根本就没有必要知道我后台数据库是什么,我要找谁去实现我下面的操作,交给工厂就可以了!工厂去给你生产。

 

hibernate,这几个中最没有技术含量但是最繁琐的就是hibernate,他异常的强大,可能后期的操作我们对hibernate就是一个配置,而操作要放到dao的implent中,呈现放到struts中。这样。

    他的整体的一个走向应该是这样的:

    client》提交表到到 struts》请求 daofactory》 我需要实现什么方法 dao》按照我声明的接口去实现》daoimpl》我需要知道我操作那个数据库 hibernate

    如何操作hibernate 是通过一个session对象来操作,hibernate的session有别于httpcontext的session,为什么要hibernate来持久化,我个人理解是这样的!他是仿照http协议来进行的,因为http协议是一种无状态的协议,那么我要想在一定的时间内保持一定的数据,就需要试用他提供的一个session来保持数据的“持久化”,同样为了在程序中对数据进行持久化的保持,hibernate模仿http协议,不过他就是懒省事,直接把本应该是什么名字的东西也叫成了session,并且由这个session来完全的操作hibernate。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值