转 Spring是如何管理Hibernate和Struts的(一)

项目做完了,总结一下.该项目是利用SSH技术实现的.下面来谈谈Spring是如何管理Struts2和hibernate的.

一:

先说说Spring是如何运作的吧. 在tomcat启动的时候, 先会在web.xml中加载两个句话,

Web.xml代码  

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>classpath:applicationContext.xml</param-value>
  4. </context-param>

Java代码  

  1. <listener>
  2. <listener-class>
  3. org.springframework.web.context.ContextLoaderListner
  4. </listener-class>
  5. </listener>

在这里,ContextLoaderListener继承了ServletContextListener.因此,Spring会根据 contextConfigLocation所指的Applicationcontext.xml自动装配xml文件中所用到的bean对象.

在applicationcontext.xml中bean的定义如下

Applicationcontext.xml代码  

  1. <bean id="user" class="com.test.User" abstract="false" parent="people" scope="prototype">
  2. <property name="dept" ref="dept"  ></property>
  3. </bean>

当id中需要包含斜杠"/" 等特殊字符时,要将id换乘name的同等的. 还有一个特别说明的是,这里的id和name的值必须是唯一的.

二: Spring是如何管理hibernate的.以及Spring管理的事务.

Spring加载之后,会根据applicationcontext.xml文件中的配置来装配实例.

Java代码  

  1. <bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  2. <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
  3. </bean>

他会根据hibernate.cfg.xml所配置的加载hibernate配置信息.并实例化sessionFactory.并且如果Dao要受Spring管理, 那么此Dao类需要继承HibernateDaoSupport.

Spring提供的事务管理有两种方式,编程式的和申明式的. 编程式的繁琐,我一般不喜欢用.最喜欢的一种是利用Spring封装的aspectJ, 利用Aop来管理事务很方便的.

首先创建一个事务管理器

Java代码  

  1. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  2. <property name="sessionFactory" ref="sessionFactory">
  3. </property>
  4. </bean>

声明一个通知, 并声明此通知受某一个事务管理器管理

Java代码  

  1. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  2. <tx:attributes>
  3. <tx:method name="save*" />
  4. <tx:method name="*" readonly="true" />
  5. </tx:attributes>
  6. </tx:advice>

上面的一段话说明了txAdvice受transactionManager事务管理器管理, 并且管理save打头的方法. 其余的都不使用事务管理.

最后利用advisor配置advice的切入点.

Java代码  

  1. <aop:config>
  2. <aop:advisor advice-ref="txAdvice" pointcut="execution(pulic * *..*.service.*.*(..))">
  3. </aop:advisor>
  4. </aop:config>

这样, 只要经过service层就会进入事务管理.

时间: 2024-07-30 03:23:33

转 Spring是如何管理Hibernate和Struts的(一)的相关文章

8 -- 深入使用Spring -- 8...2 管理Hibernate的SessionFactory

8.8.2 管理Hibernate的SessionFactory 当通过Hibernate进行持久层访问时,必须先获得SessionFactory对象,它是单个数据库映射关系编译后的内存镜像.在大部分情况下,一个Java EE应用对应一个数据库,即对应一个SessionFactory对象. Spring 的IoC容器不仅能以声明式的方式配置SessionFactory实例,也可充分利用IoC容器的作用,为SessionFactory注入数据源引用. XML : Spring配置文件中配置Hibe

S2SH框架集成详解(Struts 2.3.16 + Spring 3.2.6 + Hibernate 3.6.10)

近期集成了一次较新版本的s2sh,出现了不少问题,网上资料也是良莠不齐,有的甚至就是扯淡,简单的把jar包扔进去就以为是集成成功了,在这里整理一下详细的步骤,若哪位有什么不同看法,可以留言,欢迎批评改正. 首先说下集成的环境,Eclipse 4.4,Tomcat 7.0.54,Struts2.3.16,Hibernate3.6.10,Spring3.2.6 相关JAR包已上传至百度云:http://pan.baidu.com/s/1pJluA5l 搭建Struts2框架 1. 创建Java We

spring管理hibernate session的问题探究

我们再用spring管理hibernate的时候, 我们会继承HibernateDaoSupport 或者HibernateTemplate类. 我们不知道这两个类之间有什么关系. 也没有去关闭session. 让我很是心不安,他可没有关闭session呀.如果..真的是后果不堪设想.百度了好久, 谷歌了好多. 都没有一个像样的说法. 说spring中HibernateDaoSupport会自己关闭session. 眼见为实.于是乎决定查看spring源码一探究竟. 先打开HibernateDa

Spring管理Hibernate

为什么要用Hibernate框架? 既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢? 首先我们来看一下Hibernate进行操作的步骤.比如添加用户的一个步骤. 看截图,可以看出,Hibernate操作的步骤如下: 1.      获得Configuration对象 2.      创建SessionFactory 3.      创建Session 4.      打开事务 5.      进行持久化操作.比如上面的添加用户操作 6. 

Spring(九)让Spring自动扫描和管理Bean

在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找和维护起来也不太方便.Spring2.5为我们引入了组件自动扫描机制,它可以在类路径下寻找标注了@Component.@Service.@Controller.@Repository注解的类,并把这些类纳入Spring容器中管理.它的作用和在xml文件中使用bean节点配置组件是一样的.要使用自动扫描机制,需配置以下信息: beans4.xml <?xml version="1

Spring中事务管理

1.什么是事务? 事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务具有四大特性ACID 1)原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不被执行.如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换:如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换. 2)一致性(Consistency):事务的执行使得数据库从一种正确状态转换成另一种正确状态.例如对于银行转账事务,不管事务

通用后台管理系统(ExtJS 4.2 + Spring MVC 3.2 + Hibernate)

通用后台管理系统(ExtJS 4.2 +Spring MVC 3.2 + Hibernate) 开发语言JAVA 成品成品 前端技术extjs 数据库mysql,sql server,oracle 系统可作为OA.网站.电子政务.ERP.CRM.APP后台等基于B/S架构的应用软件系统的快速开发框架. 详细信息 原文:http://www.yctxkj.com/product/showproduct.php?lang=cn&id=16 系统可作为OA.网站.电子政务.ERP.CRM.APP后台等

SpringMVC + Spring 3.2.14 + Hibernate 3.6.10

SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解 注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgdYX 准备工作 开发环境:JDK 7u80.Eclipse 4.4 .Tomcat 7.0.63.MySQL 5.6   开发使用组件:Spring 3.2.14.Hibernate 3.6.10.c

Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案

最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https://git.oschina.net/LanboEx/sdh.git 大体采用的开源项目有:Spring + SpringMVC + Druid + JPA(Hibernate Impl). 1. 采用到的开源项目漫谈 Spring 迷人的依赖注入特性, 使其已经稳稳的占据在 JavaEE 项目引用开