SSH中,spring实现事务回滚

applicationContext.xml配置

<!-- 配置sessionFactory,默认采用hibernate配置文件上的配置来获取数据源等等 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource">
		<ref bean="dataSource" />
	</property>
	<property name="hibernateProperties">
		<props>
			<prop key="hibernate.dialect">
				org.hibernate.dialect.Oracle10gDialect
			</prop>
		</props>
	</property>
	<property name="mappingResources">
		<list>
			<value>com/fxj/hib/hbm/Userinfo.hbm.xml</value>
			<value>com/fxj/hib/hbm/Userdetail.hbm.xml</value></list>
		</property>
</bean>

<!-- 配置事务处理器 -->  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	<property name="sessionFactory">
		<ref bean="sessionFactory" />
	</property>
</bean>

<!-- 配置事务拦截器 -->
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
	<property name="transactionManager" ref="transactionManager" />
	<property name="transactionAttributes">
		<props>
			<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
		</props>
	</property>
</bean>

<!-- 配置beanName自动代理生成器 -->
<bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
	<property name="transactionInterceptor" ref="transactionInterceptor" />
</bean> 

 <!-- 配置beanName自动代理器生成器 -->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
	<property name="beanNames">
		<!--拦截Service层--> 
		<value>*Service</value>  
	</property>  
	<property name="interceptorNames">  
		<list>
			<value>transactionInterceptor</value>
			<!--此处增加新的Interceptor-->  
		</list>  
	</property>  
</bean>


LoginServiceImpl代码

package com.fxj.service.impl;

import com.fxj.hib.dao.UserdetailDAO;
import com.fxj.hib.dao.UserinfoDAO;
import com.fxj.hib.hbm.Userdetail;
import com.fxj.hib.hbm.Userinfo;
import com.fxj.hib.hbm.UserinfoId;
import com.fxj.service.LoginService;

public class LoginServiceImpl implements LoginService {
	private UserinfoDAO userinfoDAO;
	private UserdetailDAO userdetailDAO;
	
	/**
	 * @return the userinfoDAO
	 */
	public UserinfoDAO getUserinfoDAO() {
		return userinfoDAO;
	}

	/**
	 * @param userinfoDAO the userinfoDAO to set
	 */
	public void setUserinfoDAO(UserinfoDAO userinfoDAO) {
		this.userinfoDAO = userinfoDAO;
	}

	/**
	 * @return the userdetailDAO
	 */
	public UserdetailDAO getUserdetailDAO() {
		return userdetailDAO;
	}

	/**
	 * @param userdetailDAO the userdetailDAO to set
	 */
	public void setUserdetailDAO(UserdetailDAO userdetailDAO) {
		this.userdetailDAO = userdetailDAO;
	}

	public boolean login(String username, String password) {
		//用户表
		Userinfo userinfo = new Userinfo();
		UserinfoId userinfoId = new UserinfoId();
		userinfoId.setId("1");
		userinfoId.setUsername("wang");
		userinfoId.setPassword("wang");
		userinfo.setId(userinfoId);
		userinfoDAO.save(userinfo);
		
		//用户明细表
		Userdetail userdetail = new Userdetail();
		userdetail.setId("1");
		userdetail.setFirstname("姓");
		userdetail.setLastname("名字");
		userdetail.setEmail("xxx@163.com");
		userdetail.setPhone("1380000000");
		userdetailDAO.save(userdetail);
	
		return true;

	}
}

当用户表、用户明细表有任意表更新处理异常,2个表都会回滚

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值