Spring 整合 hibernate 配置

1. spring 配置管理datasource 及 sessionFactory

1) 引入相关jdbc配置文件。

<context:property-placeholder location="classpath:jdbc.properties" />

2) 配置datasource

<bean id="dataSourceUser" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${user.jdbc.driver}" />
        <property name="jdbcUrl" value="${user.jdbc.url}" />
        <property name="user" value="${user.jdbc.user}" />
        <property name="password" value="${user.jdbc.password}" />
        <!--连接池中保留的最大连接数。默认值: 15 -->   
          <property name="maxPoolSize" value="500"/>  
          <!-- 连接池中保留的最小连接数,默认为:3-->  
          <property name="minPoolSize" value="2"/>  
          <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->  
          <property name="initialPoolSize" value="2"/> 
          <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false-->   
          <property name="breakAfterAcquireFailure" value="false"/>  
 
          <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->   
          <property name="idleConnectionTestPeriod" value="60"/>  
          <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0-->   
          <property name="maxStatements" value="100"/>  
          <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->   
          <property name="maxStatementsPerConnection" value="0"/>

    <!--  ...  -->
    </bean>

3) 配置sessionFactory
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <!-- 注入连接池 -->
        <property name="dataSource" ref="dataSource" />    <!--可由
        <!-- 配置Hibernate的其他的属性 -->
        <property name="hibernateProperties">
            <props>
                <!-- <prop key="current_session_context_class">thread</prop><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> -->
                <prop key="hibernate.dialect">org.shenyundata.cn.base.BlobMySQLDialect</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">false</prop>

      <!--  ...  -->
            </props>
        </property>
        <!-- 配置映射的注解的实体类的包 -->
         <property name="packagesToScan">
            <list>
                <value>org.shenyundata.cn.model</value>
            </list>  
        </property>
    </bean>

4. 如果使用hibernateTemplate, 需要相关配置

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

5. 事务管理器 相关配置

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

6. 事务管理器的切面逻辑配置

<tx:advice id="advice" transaction-manager="transactionManager">
        <!-- 配置拦截 -->
        <tx:attributes>
            <tx:method name="get*" />
            <tx:method name="*" rollback-for="Throwable"  />
        </tx:attributes>
    </tx:advice>
   
    <!-- 配置拦截规则 -->
    <aop:config>
        <!-- 拦截规则 -->
        <aop:pointcut id="myPointcut"
            expression="execution(* org.***.cn.service.*.*(..)) or execution (* org.***.cn.task.*.*(..))  " />
        <aop:advisor advice-ref="advice" pointcut-ref="myPointcut" />
    </aop:config>

注意事项

1.spring 负责 管理service 及dao 的生成。

2.action的生成 由struts2 spring 的plugin生成,不受spring 的管理。

3. OpenSessionInviewFilter 注意事项:

1).  必须配置在struts2 filter前面。

2).  Filter 需要 sessionfactory bean,如果需要改名 需要在filter配置信息中加入  param-name: sessionfactorybeanname param-value

3).  如果不配置 transaction,会出异常  InvaliddataaccessapiUsageException write operations are not allowed **** readonly, 所以记得配置好事务管理器

7. 相关annotation 配置

<context:annotation-config />
    <!-- scanning package -->
<context:component-scan base-package="com.****" />

8.如果需要使用aspectj语法,定义切面类逻辑,需要下面的配置

<aop:aspectj-autoproxy />  AOP annotation语法支持 ,不太重要

AOP xml配置 (重要)  见第6点。

附相关jar包:

数据库包及 日志的jar包会根据各公司的情况 略有不同。

Struts.2.1.6                    Spring 2.5.6   hibernate3.3.2           整合

Antlr-2.7.6.jar

AspectJ.jar

Aspectjweaver.jar

Cglib-nodep-2.1.3.jar

Common-annotations.jar

Commons-collections-3.1.jar

Commons-fileupload-1.2.1.jar

Commons-io-1.3.2.jar

Commons-logging-1.1.1.jar

Dom4j-1.6.1.jar

Ejb3-persistence.jar

Freeemarker-2.3.13.jar

Hibernate3.jar

Hibernate-annotations.jar

Hibernate-common-annotations.jar

Javaassist-3.9.0.GA.jar

Jta-1.1.jar

Junit4.5.jar

Mysql 驱动包

Ognl-2.6.11.jar

Slf4j-api-1.5.8.jar

Slf4j-nop-1.5.8.jar

Spring.jar

Struts2-core-2.1.6.jar

Xwork-2.1.2.jar

Commons-dbcp.jar

Commons-pool.jar

Struts-spring-plugin2.1.6.jar

个人整理,如有错误,欢迎各位留言告知,谢谢!

SSH 整合及注意事项的更多相关文章

  1. 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

    一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...

  2. Spring自学教程-ssh整合(六)

    以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 感谢您支持我的博客,我的动力是您的支持和关注!如若转载和使用请注明转载地址 ...

  3. 三大框架SSH整合

    三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...

  4. SSH整合(struts2.3.24+hibernate3.6.10+spring4.3.2+mysql5.5+myeclipse8.5+tomcat6+jdk1.6)

    终于开始了ssh的整合,虽然现在比较推崇的是,ssm(springmvc+spring+mybatis)这种框架搭配确实比ssh有吸引力,因为一方面springmvc本身就是遵循spring标准,所以 ...

  5. SSH整合之全注解

    SSH整合之全注解 使用注解配置,需要我们额外引入以下jar包

  6. 用ssh整合时,用sessionfactory的getCurrentSession()获取不到session

    在用ssh整合时,一开始用的是getCurrentSession(),获取当前线程上的session,但是总是抛异常,不能获取. 后来用sessionfactory的openSession(),但是, ...

  7. SSH整合(1)异常

    信息: No Spring WebApplicationInitializer types detected on classpath 十二月 01, 2016 10:06:12 下午 org.apa ...

  8. Spring(八)SSH整合简述

    一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1 ...

  9. SSH整合之spring整合hibernate

    SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...

随机推荐

  1. 与锤子手机HR的对话——创业没有联合创始人,CTO 等高管会把它当做自己的事业吗?

    以下对话,是在被之前的锤子HR磨叽2周约面试折腾的火大的心态下进行…… 这个问题发到知乎,被一群人骂啊……cnblogs都是工程师,估计懂期权参加创业的同学多一些,有空前往知乎声援一下……在这里:ht ...

  2. Javascript Object、Function对象

    1.Object对象 原型对象 原型是对象的一个属性,也就是prototype属性,每个对象都有这个内部属性,而且他本身也是一个对象. <script type="text/javas ...

  3. getDate()返回日期不一致问题引发的bug

    问题描述 最近在webapp的开发中遇到一个Date对象中getDate获取日期的兼容性问题,Date对象的getDate方法返回的日期和传入的日期不一致,例如: 在android 4.3以下版本,g ...

  4. CORS(跨域资源共享)

    前言:上一篇文章在写如何使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享).虽然前些天也看了一下CORS相关的文章,但是 ...

  5. Microsoft Dynamics CRM MVP

    MVP 一个响亮的名称, 不是 Kobe Bryant 不是 LeBron Raymone James 这是 Microsoft Dynamics CRM MVP 求证Link: http://mvp ...

  6. 操作系统开发系列—13.h.延时操作

    计数器的工作原理是这样的:它有一个输入频率,在PC上是1193180HZ.在每一个时钟周期(CLK cycle),计数器值会减1,当减到0时,就会触发一个输出.由于计数器是16位的,所以最大值是655 ...

  7. Android 友盟分享躺过的几个坑,大坑,坑爹啊

    前言:公司上线了一个项目,做Android 客户端集成友盟分享,在做得过程中,遇到了下面3个问题,希望其他小伙伴注意. ) 错误1: 1.错误描述 我是照着友盟的集成文档一步一步的集成的,做完后,发现 ...

  8. Android 显示意图激活另外一个Actitity

    1.跳转到一个新的Actitity 新建项目, 新建一个java类OtherScreenActivity 继承自 Activity类 package com.wuyudong.twoactivity; ...

  9. 用Reveal分析第三方App的UI

    文章出自:听云博客 Reveal简介: 这是个神奇的工具,它能常透彻地分析个App的UI结构. 这个工具包括两部分,部分是在PC上运行的一个独立应用,即Reveal.app,另一部分代码在你要分析的某 ...

  10. vs2013编译boost1.55.0 32/64位

    在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\detail\has_member_function_call ...