gpt4 book ai didi

Spring , 事务 , Hibernate 过滤器

转载 作者:行者123 更新时间:2023-12-01 14:32:45 26 4
gpt4 key购买 nike

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

我的服务层:

@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);
}
}

感谢你的帮助!!

最佳答案

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

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

关于Spring , 事务 , Hibernate 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com