关闭

struts+dao+hibernate模式

844人阅读 评论(1) 收藏 举报
静下心来好好的写写这方面的东西了!整体的小组都在学习这个架构的东西,还是来一一介绍:

    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

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10641次
    • 积分:202
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:18条
    文章分类
    文章存档
    最新评论
    朋友