(转)Spring编程式事务
PlatformTransactionManagerTransactionTemplate
一、使用PlatformTransactionManager
<bean id="transactionManager" value="PROPAGATION_REQUIRED"></property> </bean>
public class TempService { private UserDAO userDAO; private DeptDAO deptDAO; private TransactionDefinition txDefinition; private PlatformTransactionManager txManager; public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public void setDeptDAO(DeptDAO deptDAO) { this.deptDAO = deptDAO; } public void setTxDefinition(TransactionDefinition txDefinition) { this.txDefinition = txDefinition; } public void setTxManager(PlatformTransactionManager txManager) { this.txManager = txManager; } public void addTemp(){ TransactionStatus status = txManager.getTransaction(txDefinition);// try { User user = new User(); Dept dept = new Dept(); user.setRemark("USER REMARK"); dept.setRemark("DEPT REMARK"); userDAO.save(user); deptDAO.save(dept); txManager.commit(status);//提交事務 } catch (Exception e) { txManager.rollback(status); e.printStackTrace(); } }}<bean id="txTemplate" ref="transactionManager"></property> <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"></property> </bean>
public class Temp1Service { private UserDAO userDAO; private DeptDAO deptDAO; TransactionTemplate txTemplate; public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public void setDeptDAO(DeptDAO deptDAO) { this.deptDAO = deptDAO; } public void setTxTemplate(TransactionTemplate txTemplate) { this.txTemplate = txTemplate; } public void addTemp(){ txTemplate.execute(new TransactionCallback(){ public Object doInTransaction(TransactionStatus status){ try { User user = new User(); Dept dept = new Dept(); user.setRemark("USER REMARK"); dept.setRemark("DEPT REMARK"); userDAO.save(user); deptDAO.save(dept); } catch (Exception e) { status.setRollbackOnly();// e.printStackTrace(); return false; } return true; } }); }}