테이블에 단지 존재하는값인지 판단할때 카운트 쿼리로 처리하는것이 오브젝트로 반환하는것보다 안전한 로직이 될것같다.
==========================================================
– 만약에 실수로 DB에 예상과는 다르게 2개이상이 되었을때 예외를 발생시킴
(특정VO)getSqlMapClientTemplate().queryForObject(“XML이름.selectID”, map);
(Integer)getSqlMapClientTemplate().queryForObject(“XML이름.countID”, map);
==========================================================
==========================================================
queryForObject :
DB로부터 1개의 레코드를 가져와 자바 객체에 저장한다.
오직 한 개의 레코드만 반환되는 여부를 검사하는 메소드 이므로 하나이상의 레코드가 반환되는 경우 [예외처리] 됨. 그리고 값이없을경우는 null을 반환
queryForList : DB로부터 1개이상의 레코드를 가져와 자바 객체의 List를 만드는데 사용한다
==========================================================
iBatis in Action에서 나온 글인데, queryForObject 사용시에 주의점을 기록해 놨다.
역할
데이터베이스로부터 1개의 레코드를 가져와 자바 객체에 저장한다.
시그니처
1. Object queryForObject(String id, Object parameter) throws SQLException;
2. Object queryForObject(String id, Object parameter, Object result) throws SQLException;
주의점
1. 리턴값을 받는 객체에 디폴트 생성자가 없다면, 런타임 예외를 발생시킨다.
2. 두번째 시그니처에서는 3번째 파라미터가 리턴값을 대신한다. 리턴값을 받는 객체에 디폴트 생성자가 없거나, 혹은 protected 인 경우에 3번째 파라미터로 전달해서 리턴값을 가져올 수 있다.
3. 1개이상의 레코드를 반환하면 예외를 던진다. 역할에서 밝힌바대로 1개의 레코드만을 가져와야 한다.
http://kmj1107.tistory.com/entry/queryForList-queryForObject-%EC%B0%A8%EC%9D%B4%EC%A0%90
