반응형
mybatis란?
mybatis는 JDBC 프로그래밍을 단순화하기 위해 만들어졌다.
mybatis의 핵심
- 개발과 유지보수가 쉽도록 소스 코드에 박혀있는 SQL을 별도의 파일로 분리하는 것이다.
- 단순하고 반복적인 JDBC 코드를 캡슐화하여 데이터베이스 프로그래밍을 간결하게 만드는 것이다.
▶ProjectDao.java
try {
connection = ds.getConnection();
stmt = connection.prepareStatement("UPDATE PROJECTS SET "
+ " PNAME=?,"
+ " CONTENT=?,"
+ " STA_DATE=?,"
+ " END_DATE=?,"
+ " STATE=?,"
+ " TAGS=?"
+ " WHERE PNO=?");
stmt.setString(1, project.getTitle());
stmt.setString(2, project.getContent());
stmt.setDate(3, new java.sql.Date(project.getStartDate().getTime()));
stmt.setDate(4, new java.sql.Date(project.getEndDate().getTime()));
stmt.setInt(5, project.getState());
stmt.setString(6, project.getTags());
stmt.setInt(7, project.getNo());
위 ProjectDao 클래스는 Java 코드와 SQL문이 섞여 있어 코드를 읽기가 어렵다. 또한 , SQL문을 만들고자 문자열과 더하기 연산자가 얽혀 있어 소스 코드가 지저분하고 SQL 구문 오류가 발생할 확률도 높다.
▶ProjectMapper.xml
update PROJECTS set
PNAME=#{title},
CONTENT=#{content},
STA_DATE=#{startDate},
END_DATE=#{endDate},
STATE=#{state},
TAGS=#{tags},
where PNO=#{no}
mybatis를 활용하면 SQL을 별도의 파일로 분리하기 때문에 개발자가 SQL문을 더 쉽게 작성하고 관리하도록 도와주고, SQL의 작성을 DB 및 해당 업무 전문가에게 맡길 수도 있어 효율적이다.
mybatis 시나리오
- 데이터 처리를 위해 DAO는 mybatis에 제공하는 객체의 메소드를 호출한다.
- mybatis는 SQL문이 저장된 맵퍼 파일에서 데이터 처리에 필요한 SQL문을 찾는다.
- mybatis는 맵퍼 파일에서 찾은 SQL을 서버에 보내고자 JDBC 드라이버를 사용한다.
- JDBC 드라이버는 SQL문을 DB 서버로 보낸다.
- mybatis는 select문의 실행 결과를 값 객체에 담아서 반환한다. insert, update, delete 문인 경우 입력, 변경, 삭제된 레코드의 개수를 반환한다.
mybatis 환경 세팅
1. http://github.com/mybatis 에 접속하여 'mybatis-3'을 클릭한다.
2.[mybatis-3] > [README] > [Doawnload] > [최신 버전 mybatis -X.X.X.zip 링크 클릭]
3. [다운받은 mybatis-X.X.X.zip의 압축을 푼다.] > 압축 푼 파일 안에 [mybatis-X.X.X.jar] 파일과 [lib]폴더 안에 있는 파일들을 WEB-INF/lib 폴더에 복사한다.
이때, 중복 파일이 있으면 버전이 낮은 파일은 삭제해주어야 한다.
중복 파일이 있으면 버전이 낮은 파일을 삭제해준다는 방법은 다음과 같다.예를 들어 여기서 세 개의 라이브러리가 중복되는데 그 중에서 낮은 버전의 파일인 왼쪽에 빨간 박스들을 삭제해주면 된다.
반응형
'MyBatis' 카테고리의 다른 글
MyBatis 동적 SQL 사용 (예시. 항목 별 정렬) (0) | 2022.07.21 |
---|---|
[mybatis] mybatis 설정 파일 (0) | 2022.07.21 |
[mybatis] SQL mapper(맵퍼) 파일 (0) | 2022.07.21 |
[mybatis] mybatis 적용 (0) | 2022.07.20 |
퍼시스턴스 프레임워크(Persistence Framework)란? (0) | 2022.07.19 |