Spring mvc 整合hibernate 中的事务问题
spring 3+hibernate 3 整合
spring 配置文件
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /></bean><tx:annotation-driven transaction-manager="txManager" />
import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;@Repository@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)public class BaseDao<T, PK extends Serializable> implements BaseDaoService<T, PK> { @Resource SessionFactory factory; /** *保存对象 */ @Override @Transactional(readOnly = false, propagation = Propagation.SUPPORTS) public void save(T entity) { factory.getCurrentSession().persist(entity);//persist方法不能插入数据 }}@Service@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)public class MyService { @Resource MyDAO myDAO;//继承自dao基类,此处是dao的接口 @Override @Transactional(readOnly = false, propagation = Propagation.SUPPORTS) public void save(User entity) { myDAO.save(entity); }}@Controller@RequestMapping(value = "/user")public class UserAction { @Resource UserService myService;//service接口 @RequestMapping(value = "/add") public String user_add(User user) { myService.save(user); return "list"; }}factory.getCurrentSession().persist(entity);// 把persit更改为factory.getCurrentSession().save(entity);