整合关键点:
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类上或者方法上使用注解