작년에이어 올해에도 이 시기에는 시스템 오픈을 앞두고 정신없이 개발 진행중!

 

Spring Framework에서 iBatis에서 제공하는 라이브러리들을 이용하여

XML에 정의되어 있는 쿼리문을 실행하는 도중에 당황스러운 일을 경험했다.

다음과 같이 XXXDAO.java 파일에 iBatis에서 제공하는

insert(queryId, parameterObject) 함수를 사용하여

insert문을 수행하였고, DBMS는 Oracle을 사용하기 때문에

기본적으로 insert된 row의 수가 return 될 것이라고 생각했다.

 

int result = 0;
result = (Integer)insert("kipo.po.is.dao.insertDpst.002", paramVO);
if(result != 0){
     return true;
}else{
     return false;
}

 

하지만 수행결과 NullPointerException을 당하게 됐다.

당황하며 iBatis 라이브러리를 조사해보니 insert(queryId, parameterObject) 함수는 수행 후

새로 생성된 row의 PK를 Object로 return한다고 명시되어 있다.

 

간단한 해결 방법은, insert(queryId, parameterObject) 함수 대신

update(queryId, parameterObject) 함수

사용하면 쿼리 수행 성공 시 1, 실패 시 0을 반환 받을 수 있다.

 

늘 사용하던 것 만 사용해서 스펙이나 튜토리얼등을 확인 안하다보니

이런 황당한 일을 겪게 된다. 항상 공부하자!

 

Posted by mjspring

댓글을 달아 주세요



티스토리 툴바