一,集成 Spring 与 Hibernate
 1,配置SessionFactory
  1,配置
   ---------------------- applicationContext.xml ------------------------
   <!-- 配置SessionFactory(整合Hibernate) -->
   <context:property-placeholder location="classpath:jdbc.properties" />
   <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
     <bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <!-- 数据库连接信息 -->
      <property name="jdbcUrl" value="${jdbcUrl}"></property>
      <property name="driverClass" value="${driverClass}"></property>
      <property name="user" value="${username}"></property>
      <property name="password" value="${password}"></property>
      <!-- 其他配置 -->
      <property name="initialPoolSize" value="3"></property>
      <property name="maxPoolSize" value="5"></property>
      <property name="minPoolSize" value="3"></property>
      <property name="acquireIncrement" value="2"></property>
      <property name="maxStatements" value="8"></property>
      <property name="maxStatementsPerConnection" value="5"></property>
      <property name="maxIdleTime" value="20"></property>
     </bean>
    </property>
    <!-- 指定hibernate的配置文件的位置 -->
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
   </bean>
   ---------------------- jdbc.properties ------------------------
   jdbcUrl = jdbc:mysql:///itcastoa
   driverClass = com.mysql.jdbc.Driver
   username = root
   password = 1234
  2,测试代码
   @Test// 测试 SessionFactory 的配置
   public void testSessionFactory(){
    SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");
    Assert.assertNotNull(sessionFactory.openSession());
   }
 2,配置声明式事务(使用基于注解的方式)
  1,配置
   <!-- 配置事务管理器 -->
   <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
   </bean>
   <!-- 配置基于注解的事务支持-->
   <tx:annotation-driven transaction-manager="transactionManager"/>
  2,测试代码
   1,Service类
    @Service
    public class InsertUserService {
     @Resource
     private SessionFactory sessionFactory;
     @Transactional
     public void addUsers() {
      sessionFactory.getCurrentSession().save(new User());
      // int a = 1 / 0; // 这行会抛异常
      sessionFactory.getCurrentSession().save(new User());
     }
    }
   2,单元测试
    @Test // 测试声明式事务
    public void testTransaction() {
     InsertUserService service = (InsertUserService) ac.getBean("insertUserService");
     service.addUsers();
    }
 3,在web.xml中配置 spring 的 OpenSessionInView 过滤器(解决抛LazyInitializationException的问题)
  1,配置
   <!-- 配置 spring 的 OpenSessionInView 过滤器 -->
   <filter>
    <filter-name>OpenSessionInView</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
   </filter>
   <filter-mapping>
    <filter-name>OpenSessionInView</filter-name>
    <url-pattern>*.do</url-pattern>
   </filter-mapping>
  2,LazyInitializationException异常说明
   1,对于集合属性,默认是lazy="true"的,在第一次使用时才加载。
   2,但在加载时,如果Session已经关掉了就会抛LazyInitializationException异常

二,集成 Spring 与 Struts2.1.8.1
 1,在web.xml配置监听器(Spring Reference 15.2 Common configuration)
  <!-- 集成Spring -->
  <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
  </context-param>
 2,在struts-config.xml中配置controller(Spring Reference 15.4.1.1. DelegatingRequestProcessor)
  <!-- 集成Spring -->
  <controller>
   <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor" />
  </controller>
 3,测试
  1,写Action类与Service类
   @Controller("testAction")
   @Scope("prototype")
   public class TestAction extends ActionSupport {
    @Resource
    private TestService testService;
    @Override
    public String execute(){
     testService.saveTwoUser();
     return SUCCESS;
    }
   }
   @Service
   public class TestService {
    @Resource
    private SessionFactory sessionFactory;
    @Transactional
    public void saveTwoUser() {
     sessionFactory.getCurrentSession().save(new User());
     // int a = 1 / 0; // 这行会抛异常
     sessionFactory.getCurrentSession().save(new User());
    }
   }
  2,在struts.xml中配置Action
   <!-- 测试 -->
   <action name="test" class="testAction">
    <result>/test.jsp</result>
   </action>
  3,部署到Tomcat中并访问测试。

4,说明:
  1,在写Action时要指定 @Controller 与 @Scope("prototype")
  2,在struts.xml中配置action时,在class属性中写bean的名称
  
三,整合Spring与Jbpm4(jBPM4.4 Developers Guide, Chapter 17. Spring Integration) 
 1,在jbpm.cfg.xml中
  1,删除配置:
   <import resource="jbpm.tx.hibernate.cfg.xml" />
  2,增加配置:
   <!-- 整合Spring -->
   <import resource="jbpm.tx.spring.cfg.xml" />
 2,在applicationContext.xml中配置
  <!-- 配置ProcessEngine(整合jBPM4) -->
  <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
   <!-- jbpmCfg是相对于classpath的相对路径,默认值为jbpm.cfg.xml -->
   <property name="jbpmCfg" value="jbpm.cfg.xml"></property>
  </bean>
  <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
 3,测试
  @Test // 测试ProcessEngine
  public void testProcessEngine() {
   ProcessEngine processEngine = (ProcessEngine) ac.getBean("processEngine");
   Assert.assertNotNull(processEngine);
  }

OA中SSH+JBPM项目整合相关推荐

  1. Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目[Java通用框架源码及开发视频教程]

    Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目 功能简介: A.代码生成器(开发利器) 生成Java各层次的类和JSP等文件,提高开发效率 B.阿里巴巴 ...

  2. 将两个android项目整合,并在父项目中使用子项目的功能

    将两个android项目整合到一起,并在父项目中使用子项目的功能 前言 android小白,课设需要整合两个项目,并且使用子项目的功能.简单记录一下整合过程. 整合思路 将子项目设置为library, ...

  3. angular项目整合到.net mvc中

    Webpack配置 第一步必然是要先得到前端项目的打包资源,由强大的webpack来完成,目标是将angular的所有依赖以及应用主代码分别打包到polyfill.js.vendor.js.main. ...

  4. mysql oa数据库设计_OA项目1:环境搭建之数据库创建与环境添加

    首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一   指定数据库:Mysql database:oa 建 ...

  5. java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...

    详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...

  6. 面试中各个类型项目讲解

    一.ERP进销存项目 1.说说你最近做的这个项目的背景? 这个项目是为××(名称自己构思,为防止同学们面试期间撞车,此处不提供公司名称,但是此名称需要同学们调查一下这个公司是否真实存在,在百度上搜索一 ...

  7. mongodb java项目 源码_spring项目整合mongodb进行开发

    spring项目整合mongodb进行开发: MongoDB的性能指标: 100个并发,插入550万条记录的平均吞吐量:大约4100条/秒 MONGODB实际上是一个内存数据库,先将数据保存到内存,然 ...

  8. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  9. 在Eclipse中的Android项目里实现代码复用

    引言 开发时通常都会有多个项目间代码复用的需求,这时通常的做法是设置项目依赖,让一个项目引用另一个项目,比如在Visual Studio中这样就很容易实现. 而在Eclipse中的Android项目里 ...

最新文章

  1. Debian+Pure-ftpd+MySQL+User manager for PureFTPd
  2. 服务器信号分析,服务器及其讯号解析装置 Server and its signal analysis apparatus
  3. SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行
  4. java获得当前文件路径
  5. fixture.detectChange是如何触发Component view的ngOnInit钩子的
  6. 7-9 删数问题 (10 分)(思路加详解)
  7. NIO学习–核心概念与基本读写
  8. 2008年具有高校自主选拔录取资格的考生名单 - 江苏版
  9. java多线程的安全问题与死锁(面向厕所编程)
  10. js去掉html标签和去掉字符串文本的所有的空格
  11. python二进制解码_使用python3对二进制数据进行编码和解码,以将其包含到JSON中...
  12. 基于Objective-C的iOS开发--入门篇
  13. 网络排查工具MTR介绍
  14. 实盘中在vnpy多策略多交易对交易
  15. 我所知道坦克大战(单机版)之 让子弹飞、让坦克控制子弹开炮
  16. # 搜狗输入法~快捷键总结
  17. 滴滴开源的损失!章文嵩将离职,曾是阿里开源“赶集人”,投身开源 20 年
  18. 什么是arXiv.org?
  19. lodop打印html上下居中,lodop打印横向纵向
  20. MATLAB基础--MATLAB图像处理基础

热门文章

  1. OpenCASCADE绘制测试线束:几何命令之展示
  2. boost::math模块非有限环回的基本测试
  3. boost::math::tools::simple_continued_fraction用法的测试程序
  4. boost::hana::detail::create用法的测试程序
  5. boost::geometry::segment_intersection_points用法的测试程序
  6. VTK:PolyData之CenterOfMass
  7. VTK:绘图之ParallelCoordinates
  8. VTK:绘图之Diagram
  9. VTK:Math之HomogeneousLeastSquares
  10. VTK:相互作用之TrackballActor