0

DataAccessException我看到一些 Spring/Hibernate 代码具有不同的关于在 DAO 接口方法中声明的策略。

有些确实明确声明了它,有些则没有(或只是不时):

public interface FlightDao {

    boolean decrementSeat(Long flightId, int quantity);

    List<Flight> findFlights(String fromAirportCode, String toAirportCode) throws DataAccessException;

    public List<Flight> getFlights();

    Flight getFlight(Long id);

    Flight getFlight(String flightNumber);

    void save(Flight flight);

}

什么被认为是最佳实践,为什么?

更新

spring 教程的第 13.2.2 节开始,使用 @Repository 注释实现 DAO pojo 以确保将底层 ORM(或 JDBC)异常自动转换为 DataAccessException(运行时)异常层次结构非常重要。

4

2 回答 2

2

正如您在此处看到的,这是一个 RuntimeException,因此无论您是否声明它在编程方面都没有区别。当用户实现该方法时,他可以选择从方法签名中忽略此异常。

我能想到的将它放在方法签名中的唯一原因是对其进行标记,以便用户知道此方法可能会抛出此异常,因此他可以选择是否捕获并处理它。

于 2012-07-09T09:48:52.503 回答
1

如果在查找航班/获取航班/减少座位时出现任何类型的异常,调用这些“服务”方法的应用程序应该对如何处理这些异常有最终决定权。作为服务的 FlightDAO 应该简单地捕获并抛出所有异常。您可能会发现创建一个新的用户定义的异常很有用...调用它 ServiceException 或 MyDAOException 并使 FlightDAO 中的所有方法都抛出这个用户定义的异常。

于 2012-07-09T16:00:44.983 回答