我刚接触spring.How如何将我的Hibernate DAO calss中的异常抛出到服务然后再转到我的控制器以及如何通知UI有关异常.Plese帮助我抛出异常以指示用户。
服务类:
@Service
public class ServiceImpl implements Service {
private static Logger LOGGER = Logger.getLogger(AccessServiceImpl.class);
@Autowired
private DAO DAO;
@Override
@Transactional
public List<PrinterVO> getDetails() {
List<VO> printerList = null;
try {
LOGGER.info("Inside getAllPrinters()");
printerList = DAO.getAllPrinters();
} catch(Exception e) {
LOGGER.error("getAllPrinters() Error :", e);
}
return printerList;
}
DAO:
public class DAOImpl implements DAO {
@Autowired
@Qualifier(value="ressessionFactory")
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
@Override
public List<VO> getDetails() {
List<VO> printerList = null;
try {
LOGGER.info("Inside getAllPrinters()");
printerList = sessionFactory.getCurrentSession().createQuery("from PrinterVO").list();
} catch(HibernateException e) {
LOGGER.error("getAllPrinters() Error : ", e);
}
return printerList;
}
答案 0 :(得分:0)
您正在捕获异常,因此无法传播到您的UI。如果您需要执行某些操作,则应该只捕获异常。记录不是动作。
在您的DAO中,您应该注入Session
(如果您真的想依赖于Hibernate)或JPA EntityManager
。如果使用依赖注入,则不应该调用工厂方法。
我的代码中没有任何内容可以告诉我数据如何进入您的用户界面,因此我无法告诉您如何将异常传递给您的用户界面。 Spring带有自己的异常处理和翻译功能,因此您不必编写许多try/catch
块,而是依靠Spring的功能来呈现合理的错误消息。