Spring3与hibernate4集中式声明事务管理

来源:互联网 发布:淘宝双11直播间 编辑:程序博客网 时间:2024/06/07 06:46

集中式声明事务管理,指的是在配置文件中指定事务管理的方法。其原理是利用Spring的AOP进行拦截式的声明。

applicationContext-common.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.1.xsd"><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="/WEB-INF/server.properties"></property></bean><!-- data source --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass"><value>${jdbc.driverClassName}</value></property><property name="jdbcUrl"><value>${jdbc.url}</value></property><property name="user"><value>${jdbc.username}</value></property><property name="password"><value>${jdbc.password}</value></property><property name="minPoolSize"><value>10</value></property><property name="maxPoolSize"><value>20</value></property><property name="maxIdleTime"><value>600</value></property><property name="acquireIncrement"><value>2</value></property><property name="maxStatements"><value>0</value></property><property name="maxStatementsPerConnection"><value>20</value></property><property name="initialPoolSize"><value>20</value></property><property name="idleConnectionTestPeriod"><value>600</value></property><property name="acquireRetryAttempts"><value>30</value></property><property name="breakAfterAcquireFailure"><value>false</value></property><property name="testConnectionOnCheckout"><value>false</value></property></bean><!-- session factory --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan" value="com.ipt.model" /> <property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">false</prop><prop key="hibernate.use_sql_comments">false</prop><prop key="hibernate.cache.use_second_level_cache">false</prop></props></property></bean><!-- transaction manager -->  <bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- configure transaction's propagation feature --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="get*" read-only="true" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /></tx:attributes></tx:advice><!-- configure which class's which method take part in transaction --><aop:config><aop:pointcut id="allManagerMethod"expression="execution(* com.ipt.service.*.*(..))" /><aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" /></aop:config></beans>



0 0