`
默翁1
  • 浏览: 25219 次
社区版块
存档分类
最新评论

spring 声明式事务管理

 
阅读更多

在spring中经常用TransactionProxyFactoryBean完成声明式事务管理

使用TransactionProxyFactoryBean  需要注入它所依赖的事务管理器,设置代理的目标对象,代理对象的生成方式和事务属性.代理对象时再目标对象上生成的包含事务和AOP切面的新对象,它可以赋给目标的引用来替代目标对象,以支持事务或AOP提供的切面功能

利用TransactionPrxyFactory来实现spring声明式事务管理

首先,在配置文件中定义数据源和事务管理器.

<!-- 配置数据源 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://localhost:3306/hibernate"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
	
	</bean>
	
	<!-- 定义事务管理器 --> 
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 声明式的事务 -->
	
	<bean id="transaction" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager" ref="transactionManager"></property>
		<property name="target">
			<bean id="addDao" class="transaction.AddDao">
				<property name="dataSource" ref="dataSource"></property>
			</bean>
		</property>
		<property name="proxyTargetClass" value="true"></property>
		<property name="transactionAttributes">
			<props>
				<prop key="add*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>

 编写操作数据库的AddDao类,同时编写addUser()函数,在该函数中一次性实现两次数据的插入操作

public class AddDao extends JdbcDaoSupport {
	public void addUser(User user){
		String sql="insert into mw_person(name,age)values('"+user.getUsername()+"',"+23+")";
		getJdbcTemplate().execute(sql);
		getJdbcTemplate().execute(sql);
	}
}

 测试类:

public class Test {
	public static void main(String[] args) {
		Resource resource=new ClassPathResource("transaction/beam.xml");
		BeanFactory factory=new XmlBeanFactory(resource);
		AddDao addDao=(AddDao)factory.getBean("transaction");
		User user=new User();
		user.setUsername("abc");
		user.setAge(34);
		addDao.addUser(user);
	}
}

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics