Mybatis 환경에 개발되어 있는 소스를 보니 아래와 같은 문장을 보게 되었다.
<select id="spSelData" parameterType="map" statementType="CALLABLE" resultType="map">
{ call SP_DATA_SELECT(
#{dataSn,mode=IN,jdbcType=INTEGER},
#{result_msg, mode=OUT, jdbcType=VARCHAR}
)
}
</select>
검색하다 보니 'default값은 "PREPARED" 이고, STATEMENT,CALLABLE 로 설정가능하다.'
라고 명시가 되어 있고 설명을 통해 이해할 수 있었다.
설명은 다음과 같다.
PREPARED 와 STATEMENT, CALLABLE과의 차이는
' 프로시저로 쓰느냐 일반 쿼리로 쓰느냐 의 차이 '
원래 Mybatis를 안쓰고 java.sql를 사용하여 데이터베이스를 조회 할때
Connection으로 데이터베이스와 연결하고 PreparedStatement(또는 Statement)로 쿼리를 요청하고
ResultSet 쿼리한 결과를 받아오도록 쓰는데
주로 Select, Insert, Update, Delete로 시작하는 SQL 문을 쿼리할때 사용한다.
그러나 sql server나 oracle에서는 가끔 function이나 procedure를 사용할때가 있는데
PreparedStatement(또는 Statement) 대신에 Callable를 사용하여 쿼리를 하였습니다.
PREPARED 와 STATEMENT, CALLABLE는
PreparedStatement, Statement, Callable 클래스의 약어 인 듯 하다.
Select, Insert, Update, Delete를 사용하는 일반 쿼리는 PREPARED 와 STATEMENT를 사용하고,
Function이나 Procedure는 CALLABLE을 사용하면 된다.