다른 분들은 어떻게 개발을 하시는지 모르겠으나
일반 JDBC를 사용하던 입장에서는
null 을 return 하는것을 기준으로 클라이언트코드들을(dao를 쓰는 코드..) 작성해왔습니다.
그리고 스프링으로 프로젝트를 진행중이었던 2개정도의 프로젝트를 경험했습니다.
2개의 프로젝트는 각기 다르게 진행을 하였는데요(둘다 JDBCTemplate을 사용하였습니다.)
하나는 DAO 에서 쿼리 결과가 없을 경우 EmptyResultDataAccessException 익셉션을 잡아서 null을
return 하였습니다.
그리고 하나는 queryForList를 사용했었지요.
전 개인적으로 try catch를 통해서 클라이언트 코드에게 null을 return하는 것이 맞는 것 같은데,
여러분은 어떠신가요...?;;
수년전에 논의가 되었던 사항이기도 하지만 궁금하여 여쭈어봅니다 ㅠ
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
현재 프로젝트가 급박하다보니 신경을 계속 못쓰고 있었네요.
말씀해주신 부분은 프로젝트 마무리 단계에서 손을 봐야겠어요 ㅠㅠ
웹개발자가 없다보니 jsp로 마무리한 프로젝트를 spring+tiles조합으로 리팩토링하는걸 화면변화가 없다보니 서핑만하고 혼
자 다른 개발일하면서 놀고 있는 줄로 알아서 뭐라도 해야겠네요ㅠㅠㅠ
아, 여기에선 링크가 깨지는데 메일에서는 잘 보이네요. 답변 감사합니다. :)
public <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException {
List<T> results = query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper, 1));
return DataAccessUtils.requiredSingleResult(results);
}EmptyResultDataAccessException을 내는 곳은 DataAccessUtils.requiredSingleResult(...) 안 입니다. 매개변수로 받은 집합에서 첫번째 항목을 반환하는데, 만약 받은 집합이 공집합이면 이 예외를 내는 거죠. JdbcTemplate 설계자는 queryForObject의 경우 반드시 하나의 결과가 있어야 한다(requiredSingleResult)고 생각한 것 같습니다.