【问题标题】:Spring , Transactions , Hibernate FiltersSpring , 事务 , Hibernate 过滤器
【发布时间】:2011-06-08 12:36:57
【问题描述】:

我在 Spring 中使用声明式事务。我有一个用“事务”注释的服务层。该服务层调用 DAO。我需要在所有 dao 方法中启用休眠过滤器。我不想每次都显式调用 session.enablefilter。那么有没有一种方法可以使用 spring 事务 aop 等,以便在创建休眠会话时调用拦截器?

我的服务层:

@Service("customerViewService")
@Transactional 
 public class CustomerViewServiceImpl extends UFActiveSession implements CustomerViewService {
private static final Logger log = LoggerFactory.getLogger(CustomerViewServiceImpl.class);

private CustomerDAO daoInstance = null;

private CustomerDAO getCustomerDAO() {
    if (daoInstance == null)
        daoInstance = DAOFactory.getDao(CustomerDAO.class);

    return daoInstance;
}
@Transactional(propagation=Propagation.REQUIRED, rollbackFor=DAOException.class)
public CustomerModel getCustomerModel() throws UFClientException {
    CustomerModel model = null;
    try {
        Customer customerTbl = getCustomerDAO().getCustomerDetail(getUserName());
        if (customerTbl == null) {
            log.error("DAO-02: No entry found for Customer id- " + getUserName());
            throw new UFClientException("DAO-02");
        }
        model = DozerConverter.hibernateToDto(customerTbl, CustomerModel.class);
    }
    catch (DAOException e) {
        log.error("DAO-01: Not able to fetch entry from database for customer.");
        throw new UFClientException();
    }
    return model;
}

}

我的道层

public class CustomerDAOImpl extends HibernateDaoSupport implements CustomerDAO {
@SuppressWarnings("unchecked")
public Customer getCustomerDetail(String email) throws DAOException {

    try {
        List<Customer> customers = getHibernateTemplate().find(sb.toString(), email);
        if (customers.size() == 0)
            return null;

        return customers.get(0);
    }
    catch (Exception e) {
        throw new DAOException(e);
    }
}

感谢您的帮助!!

【问题讨论】:

    标签: spring transactional hibernate-filters


    【解决方案1】:

    您可以创建自己的拦截器,并将其应用于具有事务性的方法:

    @AroundInvoke("@annotation(transactional)")
    public ... handle(Transactional transactional) {
     ...
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 2011-06-13
      • 2017-07-30
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多