您的位置:首页 > 编程语言 > Java开发

关于Struts、Hibernate、Spring的简单理解

2015-10-21 20:04 225 查看
Struts是进行流程控制。

它的工作流程:

1)客户端向Servlet容器发送请求

2)经过一系列的过滤器

3)到filterDispatcher,然后FilterDispatcher会询问ActionMapper是否调用某个Action

4)如果ActionMapper同意调用某个Action,那么就把请求交给ActionProxy管理

5)ActionProxy会通过配置文件Struts.xml找到相应的Action

6)ActionProxy会创建ActionInvocation实例

7)ActionInvocation会调用相对应的Action

8)执行了execute方法之后,根据Struts.xml返回相应的JSP页面或者Action

Hibernate是ORM框架,让Pojo类和数据库进行映射,实现对象的持久化。

工作原理:

1)通过Configuration().configure()来读取并解析hibernate.cfg.xml文件

2)hibernate.cfg.xml读取*.hbm.xml文件

3)config.buildSessionFactory() 创建Session工厂

4)打开session SessionFactory.OpenSession()

5)创建事务 session.beginTransaction()

6)持久化

7)事务提交

8)session关闭

9)SessionFactory关闭

有两个配置文件

hibernate.cfg.xml(配置数据库相关)

tablename.hbm.xml(映射关系)

在hibernate中,有几个重要的问题

1)二级缓存的问题

缓存的好处:

hibernate是ORM框架,要对物理数据源进行访问,当应用程序对数据源访问的频率过多,那么就会造成整个系统的运行效率降低。缓存就是把数据库中的数据复制到到缓存池中,然后访问的时候,直接访问缓存,这样就会提高程序的运行效率。

session就是一级缓存。当查询数据的时候,session先从自身内部进项查询,如果查到,就取出数据,如果没有再从数据库中查找,并且把查找到的数据存到缓存池中,以便下次再次进行查询。但是session缓存是线程不安全的,是事务级别的缓存,多个线程都进行查询的时候,数据不安全,所以没有太大的使用价值。

因此有了hibernate的二级缓存。它是独立于hibernate的。如OSCache,首先需要在hibernate.cfg.xml中配置第三方的缓存,然后要配置缓存的配置文件,然后还要确定哪些实体对象需要在二级缓存中。

hibernate如何使用缓存:

当查询一个数据的时候,先从session中查找,找不到的话如果配置了二级缓存,那么从二级缓存中查找,如果还差找不到,从数据库中进行查找。

2)session的get和load方法

load可以延迟加载,get不可以

Spring中主要是两种思想:IOC(控制反转)和AOP(面向切面)

IOC:比如一个类想调用另一个类,通常需要新建一个对象吧,但是在IOC中,新建类和依赖关系都交给Spring容器来管理。降低了各个模块之间的耦合度。

通常有两种:

1)setter

2)构造器注入

AOP:一种编程思想。比如日志:

一个例子:一个项目已经做完了,但是突然想给每个业务都加上日志,那么需要对每个业务的代码都进行修改,这样明显比较麻烦,而且还是重复写代码。有了AOP之后,写一个方法,某个业务要操作数据库的时候,就会调用这个方法,就会形成相应的日志,这样就不用写那么多重复的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: