Spring和hibernate框架整合

整合关键点:

1、数据源dataSource交给Spring

  <!--加载属性文件-->    
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 数据源的配置 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

2、sesionFactory的对象交给spring

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" >
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocations" value="classpath:applicationContext.xml"></property>
</bean>

3、事务管理

  (1)配置platFormTransationManager接口(底层接口)

    platFormTransationManager的两个实现类:

    jdbc的技术:DataSourceTransationManager(这个需要配置dataSource)

    hibernate技术:HibernateTransationManager(这个需要配置sessionFactory)(这次用这个)

        这两种事务管理器后面详细讲解 

  (2)配置事务管理器

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

  (3)管理事务

  方法一:xml的方式管理事务

    1、配置通知

<!-- 具体增强逻辑 -->
<tx:advice id="txAdvice"> <tx:attributes>
       <!-- 匹配业务类中的方法名称 --> <tx:method name="save*"/> <tx:method name="update*"/> <tx:method name="delete*"/> <tx:method name="find*" read-only="true"/> <tx:method name="*" /> </tx:attributes> </tx:advice>

   2、配置aop切面

<aop:config>
        <!-- 配置切点   配置具体哪些方法需要增强-->
        <aop:pointcut expression="execution(* cn.itcast.service.*.*(..))" id="cut"/>
        <!-- 配置切面:将增强的逻辑作用到 切点   (通知+切入点) -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="cut"/>
    </aop:config>

  方法二:注解方式管理事务

  1、同上配置事务管理器

  2、开始注解驱动(扫描)

<tx:annotation-driven  transaction-manager="transactionManager"/>

  3、在service类上或者方法上使用注解

猜你喜欢

转载自www.cnblogs.com/songcuiting/p/8989266.html