1.事务加在DAO层还是service层?
service中可能多涉及多种DAO的操作,比如存了一个User之后,需要保存一条日志信息;如果在DAO中分别设置事务的话,一个DAO下面方法抛出异常了,但是不会影响到另一个DAO下面的方法,这是两个事务;因此事务要加在Service层;
 
2.需求:存一个user的同时,记录一个日志,说这个user被存了;
 
3.代码实现:--这边是spring管理hibernate下的transaction;
1)DAO实现:UserDAOImpl.java  --保存User 
package com.cy.dao.impl;

import javax.annotation.Resource;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Component;

import com.cy.dao.UserDAO;
import com.cy.model.User;

@Component
public class UserDAOImpl implements UserDAO {
    
    @Resource
    private SessionFactory sessionFactory;
    
    //保存User
    public void save(User user) {
        Session s = sessionFactory.getCurrentSession();
        s.save(user);
    }

}
View Code

2)DAO实现:LogDAOImpl.java  --保存Log

package com.cy.dao.impl;

import javax.annotation.Resource;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Component;

import com.cy.dao.LogDAO;
import com.cy.model.Log;

@Component("logDAO") 
public class LogDAOImpl implements LogDAO {
    
    @Resource
    private SessionFactory sessionFactory;
    
    //保存日志信息
    public void save(Log log) {
        Session s = sessionFactory.getCurrentSession();
        s.save(log);
        throw new RuntimeException("error!");
    }

}
View Code

相关文章:

  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-24
  • 2021-08-04
  • 2022-01-10
  • 2021-07-13
相关资源
相似解决方案