给详细解释一下SHH中Spring 的事务,高手上,满意分在加++

[复制链接]
查看11 | 回复1 | 2009-7-19 14:51:24 | 显示全部楼层 |阅读模式
1.XML声明式:----------------------------------------------------------------------在ApplicationContext.xml里配置事务拦截器,来拦截和管理事务。代码大致如下:


PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_SUPPORTS



*Dao

transactionInterceptor
----------------------------------------------------------------------2.标注式事务在事务处理代码方法上面加@,来控制事务。代码大致如下:----------------------------------------------------------------------dao层: package com.spring.test6.esp.sample001.dao; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import com.spring.test6.esp.sample001.model.User; @Service("UserDAO") public class UserDAOImpl implements UserDAO { private EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } public EntityManager getEntityManager() { return this.em; } public void create(User user) { em.persist(user); } } service层: package com.spring.test6.esp.sample001.service; import org.springframework.transaction.annotation.Transactional; import com.spring.test6.esp.common.service.BaseServiceImpl; import com.spring.test6.esp.sample001.model.User; @Transactional public class UserServiceImpl extends BaseServiceImpl[U] implements UserService { public UserServiceImpl() { super(User.class); } @Override @Transactional(noRollbackForClassName = "java.lang.Throwable") public void create1() { try { User user = new User(); user.setId(68); user.setName("caterpillar"); user.setAge(30); User user1 = new User(); user1.setId(82); user1.setName("caterpillar"); user1.setAge(30); this.dao.create(user1); this.dao.create(user); } catch (RuntimeException re) { throw re; } } } ----------------------------------------------------------------------3.代码提交事务就是在代码中加入事务控制。代码你也写了,就是:----------------------------------------------------------------------Sessionsession=hi.HibernateSessionFactory.getSession();//从工厂类中得sessionTransactiont= session.beginTransaction();//开启一次事务session.save(customer);//执行数据库操作t.commit();//提交事务(放在try..catch中)----------------------------------------------------------------------
回复

使用道具 举报

千问 | 2009-7-19 14:51:24 | 显示全部楼层
这么多怎么写啊,给个邮箱,我给你发一个我的做的例子吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行