`
mayabin
  • 浏览: 41360 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

[翻译]在spring框架中添加HibernateInterceptor使得quartz可以调用Hibernate Se

阅读更多

翻译的这篇文章包含了好几个知识点,虽然短了点儿,但是非常有用。

1.spring

2.hibernate

3.quartz--定时调度工具,spring已经做了封装,也可以单独使用。

4.OpenSessionInViewFilter--web框架下的一个filter,能够让web request使用单一的hibernate session。

有的j2ee项目在web.xml文件中添加了OpenSessionInViewFilter,其目的是给web request提供单一的hibernate session,但是它也只能给web request提供hibernate session。也就是说,如果有某一个hibernate请求不是经由web request发起的,而是由quartz这样的定时任务发起的,那么quartz怎么样才能得到hibernate session呢?

解决办法就是使用HibernateInterceptor。当quartz发起hibernate session请求时,HibernateInterceptor会提供一个hibernate session给它。

配置文件如下:

 

xml 代码

 

  1. <!-- Declaration of HibernateInterceptor -->  
  2.     <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">  
  3.          <property name="sessionFactory">  
  4.            <ref bean="sessionFactory"/>  
  5.          </property>  
  6.     </bean>       
  7.     <!-- Manager template  -->  
  8.     <bean id="txProxyTemplate" abstract="true"  
  9.         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  10.         <property name="transactionManager" ref="transactionManager"/>  
  11.         <property name="transactionAttributes">  
  12.             <props>  
  13.                 <prop key="save*">PROPAGATION_REQUIRED</prop>  
  14.                 <prop key="remove*">PROPAGATION_REQUIRED</prop>  
  15.                 <prop key="update*">PROPAGATION_REQUIRED</prop>                   
  16.                 <prop key="create*">PROPAGATION_REQUIRED</prop>      
  17.                 <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>  
  18.             </props>  
  19.         </property>  
  20.         <property name="preInterceptors">  
  21.             <list>  
  22.              <ref bean="hibernateInterceptor"/>  
  23.             </list>  
  24.         </property>                           
  25.     </bean>  
  26.     <!-- Sample Manager that encapsulates business logic -->  
  27.     <bean id="userManager" parent="txProxyTemplate">  
  28.         <property name="target">  
  29.             <bean class="com.acme.service.impl.UserManagerImpl" autowire="byName"/>  
  30.         </property>  
  31.     </bean>  


其中,<!-- Declaration of HibernateInterceptor -->部分定义了HibernateInterceptor;

 <!-- Manager template  -->部分定义了模板,并且加入了HibernateInterceptor;

<!-- Sample Manager that encapsulates business logic -->部分定义业务逻辑中的bean,记住,一定让他使用模板。

译者言:

1.这样做使得非web request可以使用j2ee资源。

2.我的做法和上面有些差别,但是也成功了。 我的做法是:

我没有定义<!-- Declaration of HibernateInterceptor -->这一部分,只定义了模板,在添加bean的时候使用模板。

 

原文如下:
Using HibernateInterceptor to bind Hibernate Sessions for Quartz jobs in Spring
I use the OpenSessionInViewFilter to provide a single Hibernate Session for each request to my Spring webapplications. It works transparently and well, but only for web requests. So how do you provide a Hibernate Session to your background jobs (like Quartz scheduled jobs)?

I wire a HibernateInterceptor into my proxy template for all the managers in my application. With this configuration, when Quartz fires up a job and makes a call to the manager/service layer the HibernateInterceptor binds a Hibernate Session to the background thread. Beautiful.

It looks something like this:(代码同上)

分享到:
评论
2 楼 wangyuyang 2012-03-19  
你好,你这里说的
<bean id="userManager" parent="txProxyTemplate"> 
        <property name="target"> 
            <bean class="com.acme.service.impl.UserManagerImpl" autowire="byName"/> 
        </property> 
    </bean>
我不太懂该怎么弄,请问你能赐教吗?我得QQ:1025484689
谢谢了。
1 楼 yanite 2009-10-08  
天资不够,没看懂

相关推荐

    springmvc+spring+hibernate

    Spring MVC、Spring 和 Hibernate 是Java Web开发中的三大主流框架,它们各司其职,共同构建了一个强大而灵活的后端架构。Spring MVC 负责处理HTTP请求并将其路由到相应的控制器,Spring 提供了依赖注入(DI)和面向...

    quartz1.6.5+Hibernate+Spring

    在整合 Quartz、Hibernate 和 Spring 的场景下,开发者可以创建自定义的 Spring Bean 作为 Quartz 作业,这些作业可以在指定的时刻由触发器调用。触发器(如 CornTrigger)允许以 CRON 表达式定义任务的执行时间,...

    Spring3Mvc+Hibernate整合Axis2发布WebService并配置Quartz调度

    将Spring3 MVC和Hibernate整合的业务逻辑封装为服务,通过Axis2发布,可以使得服务接口对调用者透明,易于集成到其他系统中。 **Quartz** 是一个开源的作业调度框架,用于在Java应用程序中安排和执行任务。它支持...

    spring整合其他框架

    Spring支持Ehcache作为二级缓存,通过声明式配置,可以将数据存储在内存中,减少数据库查询,提高响应速度。 5. Spring与Quartz整合:Quartz是用于任务调度的开源库。Spring与Quartz结合,可以方便地创建、管理和...

    spring+springmvc+hibernate/金融类项目源码,针对对账业务

    【标题】:“Spring+SpringMVC+Hibernate/金融类项目源码,针对对账业务”是一个基于Spring框架的完整金融项目,它集成了Spring、SpringMVC和Hibernate三大核心技术,用于处理金融领域的对账功能。这个项目展示了...

    quartz1.6.5+Hibernate+Spring整合Demo

    quartz1.6.5 整合 Hibernate、Spring,本例支持同时运行多个不同的任务,每个任务动态调用的方法和时间都不一样; 附件中有支持各种数据库的脚本;本例支持Oracle10g数据库脚本;开发测试使用的IDE工具MyEclipse6.5;...

    springMVC+spring+hibernate jar包

    Spring MVC、Spring 和 Hibernate 是Java开发中非常重要的三个框架,它们构成了经典的Java企业级应用开发栈,也被称为SSH(Spring、Struts、Hibernate)架构,尽管这里的Struts被Spring MVC替代了。这些框架分别处理...

    quartz spring动态定时任务,可以直接在tomcat上面部署运行

    Quartz是一个开源的作业调度框架,而Spring框架则为Java应用程序提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,将两者结合,可以在Spring管理的bean中无缝集成定时任务。 Quartz的核心概念包括Job、...

    Springboot整合Quartz实现定时任务数据库动态配置

    在Spring Boot的`pom.xml`文件中,引入Spring Boot的`spring-boot-starter-quartz`和`spring-boot-starter-data-jpa`依赖,同时也要添加MySQL的JDBC驱动依赖,以便与数据库交互。 ```xml &lt;groupId&gt;org.spring...

    基于Hibernate+Spring框架下物业管理系统的设计与实现.docx

    本文将深入探讨如何利用Java Web开发中的两大热门框架——Hibernate和Spring,构建一个高效、易维护的物业管理系统。Hibernate作为一款强大的对象关系映射(ORM)框架,可以简化数据库操作;而Spring框架则提供了...

    struts2+spring+hibernate简单的工作流系统

    Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的组合常被称为SSH框架,用于构建高效、可维护的Web应用程序。本工作流系统实例是基于SSH框架搭建的,旨在帮助开发者深入理解这三大框架的集成与...

    综合spring mvc + spring + hibernate + bootstrap开发图书管理系统

    在本项目中,我们利用了Java技术栈中的四个核心组件:Spring MVC、Spring、Hibernate以及Bootstrap,构建了一个全面的图书管理系统。这个系统旨在提供高效、用户友好的图书管理功能,涵盖了从图书入库、检索到借阅、...

    SSH+quartz实现的可动态配置时间规则的定时任务

    在这个项目中,Hibernate可能被用来存储和检索quartz的作业和触发器信息,包括时间规则,这样就可以在数据库中动态更新任务配置,而无需修改代码。 4. **Quartz库**:Quartz是Java中广泛使用的任务调度库,它可以...

    Quartz动态添加信息

    在Quartz中,动态添加、删除和修改任务是常见的需求,这使得应用程序能够根据运行时的情况来调整其执行计划。下面我们将深入探讨如何在Quartz中实现这些操作。 1. **动态添加任务** 动态添加任务是指在程序运行时...

    spring+hibernate+struts2整合全套扎包

    Spring、Hibernate和Struts2是Java Web开发中的三大框架,它们各自负责应用程序的不同层面,而将这三者整合使用,可以构建出强大的企业级Web应用。Spring作为一个全面的轻量级容器,负责管理对象(包括服务层和DAO层...

    Spring4.2_Struts2_Hibernate4.3框架整合

    这些框架各自在应用开发中扮演着重要的角色:Spring提供了依赖注入和面向切面编程,Struts2用于处理HTTP请求和控制应用程序流程,而Hibernate则作为持久层框架负责数据库操作。 1. **Spring 4.2**: - **依赖注入...

    struts2.3.7+spring3.1.1+hibernate4.1.6

    SSH框架是Java开发中常用的三大框架的组合,包括Struts2、Spring和...在实际开发中,SSH框架的整合还可能涉及到安全框架(如Spring Security)、任务调度(如Quartz)等其他组件的集成,以满足更复杂的企业级需求。

    spring jar 包详解

    - **功能简介**:包含在应用中使用 Spring 的 AOP 特性时所需的类,如声明式事务管理。 - **应用场景**:适用于需要使用 AOP 功能的项目。 - **依赖关系**:依赖于 `spring-core.jar`、`spring-beans.jar`、`cglib-...

    毕业设计struts+hibernate+spring添删改查示例源码

    Struts、Hibernate和Spring是Java开发中非常流行的三大框架,它们各自负责Web应用的不同层面,协同工作可以构建出高效、可维护的系统。Struts主要处理MVC(Model-View-Controller)架构中的控制层,Hibernate则专注...

Global site tag (gtag.js) - Google Analytics