개발을 하고 was를 기동할때 아래와 같은 메세지를 만날 수 있다. Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\oingdaddy\target\classes\~\oingService.sql]'; nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 55; columnNumber: 22; The content of elements must consist of well-..
MyBatis를 활용해서 여러가지 프로젝트를 하다보면 같은 MyBatis인데도 다른 경우가 있다. 바로 제목에 나온것처럼 Mapping 방식의 차이가 있을수 있기 때문이다. Query ID Mapping 방식 vs Mapper Interface 방식 으로 프로젝트마다 사용되는 방식이 다르다. "이게 더 좋으니 이걸로 쓰세요" 하려는 글은 아니고 이런 방식이 있고 이런 특징들이 있다 라는걸 알리고자 한다. Query ID Mapping 방식 Query ID Mapping 방식은 필자에겐 가장 익숙하다. 왜냐면 가장 많이 써온 방식이기 때문이다. 이전의 포스팅에서 MyBatis를 설명할때도 이 Query ID Mapping 방식으로 설명을 했었다. SELECT CODE_NAME , TO_CHAR(UPD_DT..
개요 JAVA에서 DB 프로그래밍을 하기 위해서 JDBC가 제공되었다. JDBC는 RDB 사용을 위한 다양한 API를 제공하지만, DB가 방대해지고 각 data간 관계가 복잡해짐에 따라 다수의 메소드를 호출하고 관련 객체를 해제해야 하는 문제점이 심화되었다. 이러한 문제점을 해결하고 더욱 효과적으로 DB를 관리하기 위해 MyBatis가 고안되었다. MyBatis는 개발자가 지정한 SQL, 저장 프로시저 그리고 고급 매핑을 지원하여 개발 생산성을 높이는 persistence framework이다. 기존 JDBC만을 이용한 방식은 프로그램 소스안에서 직접 connection을 맺고 SQL문을 처리하고 rs.next() 등을 이용하여 하나씩 받아와야 해서 코드가 길어지고 SQL의 변경이 필요한 경우에도 jav..