1. Mybatis란 무엇인가?
사실 JDBC라는 개념부터 알아야한다.
JDBC란 Java에서 DB와 연동하고 쓰기위해 사용하는 API이다.
JDBC는 DB 연동에 필수적으로 사용하는 것인데
이 JDBC만 사용해서 DB 쿼리문을 작성하면 java소스와 쿼리소스가 겹치게 되고 관리가 어려워진다.
Mybatis는 SQL 쿼리문을 xml 형식의 파일로 분리시켜 저장관리할 수 있고 java소스에서 xml 태그의 id만 호출하며 개발의 편리함을 제공한다.
Mybatis는 xml형식의 쿼리파일을 저장 및 호출하는 역할을 내부적으로 처리하는 것이다.
2. 왜 쓰고 있나?
Mybatis 없었을 때 소스 방식
1 2 3 4 5 6 7 8 9 10 11 12 13 | public Entity selectFAQList(UserConnection conn, Entity param) throws SQLException { UserStatement stmt = null; ResultSet rslt = null; StringBuffer sql = new StringBuffer(); sql.append("\n SELECT *"); sql.append("\n FROM"); sql.append("\n TABLE1"); stmt = conn.prepareStatement(sql.toString()); rslt = stmt.executeQuery(); Entity _DATA = new Entity(); _DATA.put("_DATA", EntityUtil.ResultSetToClobList(rslt)); return _DATA; } | cs |
소스를 보면 .java 파일안에 StringBuffer라는 클래스를 호출해 sql이라는 객체를 만들어 문자를 계속 이어주면서 sql query를 작성하고 있다.
다 작성한 다음 작성 된 쿼리를 다른 메소드의 파라미터로 넘기고 리턴하고 있다.
이러한 방식은 쿼리가 수정될 때 마다 계속 .java에 들어가 .append() 메소드를 추가하고 저장해 유지보수가 힘들고 sql query구문의 분리가 어려지고 복잡해진다.
또한 쿼리 양이 많아질수록 .java에는 자바코드 뿐만아니라 쿼리코드로 인해 양이 방대해지는 문제가 발생한다.
아 이래선 도저히 안된다. 유지보수도 해야되고 추가개발도 해야되므로 sql구문과 java코드의 분리 필요성을 느끼게 된다.
Mybatis 적용 후 소스 방식
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8"?> <ENTITY id="table.getTable1List" type="SQL" return="List"> <![CDATA[ SELECT * FROM TABLE1 ]]> <PARAMS> </PARAMS> </ENTITY> | cs |
xml로 빼내서 쿼리문을 작성하면 내부적 처리는 Mybatis에서 모두 처리해주므로
Entity Id 값을 java에서 호출만하면 된다.
'전체 > 개발지식' 카테고리의 다른 글
Spring 개발 구성 및 파일 디렉토리 구조 (0) | 2018.10.04 |
---|---|
open <tag> in XML mapper - mybatipse plugin 사용하기 (3) | 2018.02.21 |
Servlet 정의 (0) | 2017.05.15 |
Maven을 쓰는이유 (1) | 2017.05.12 |
어려웠던 용어 및 개념 - 1 (0) | 2017.05.12 |