如何从Hibernate DAO抛出异常到Spring MVC控制器?

时间:2014-10-16 17:07:01

标签: java spring-mvc

我刚接触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;
    }

1 个答案:

答案 0 :(得分:0)

您正在捕获异常,因此无法传播到您的UI。如果您需要执行某些操作,则应该只捕获异常。记录不是动作。

在您的DAO中,您应该注入Session(如果您真的想依赖于Hibernate)或JPA EntityManager。如果使用依赖注入,则不应该调用工厂方法。

我的代码中没有任何内容可以告诉我数据如何进入您的用户界面,因此我无法告诉您如何将异常传递给您的用户界面。 Spring带有自己的异常处理和翻译功能,因此您不必编写许多try/catch块,而是依靠Spring的功能来呈现合理的错误消息。