출처 : 코드로 배우는 스프링 웹 프로젝트
저자 : 구멍가게 코딩단
* MyBatis 를 이용할 때 SQL 문을 사용하는 방식
- XML만을 이용해서 SQL 문을 설정, DAO 에서는 XML 을 찾아서 실행하는 코드를 작성하는 방식
장점 : SQL 문은 별도의 XML 로 작성되기 때문에 SQL 문의 수정이나 유지보수에 적합
단점 : 개발 시 코드의 양이 많아지고, 복잡성이 증가
- 애노테이션과 인터페이스만을 이용해서 SQL 문을 설정
장점 : 별도의 DAO 없이도 개발이 가능하기 때문에 생산성이 크게 증가
단점 : SQL 문을 애노테이션으로 작성하므로, 매번 수정이 일어나는 경우 다시 컴파일
- 인터페이스와 XML 로 작성된 SQL 문의 활용
장점 : 간단한 SQL 문은 애노테이션으로, 복잡한 SQL 문은 XML 로 처리하므로, 상황에 따라서 유연하게 처리
단점 : 개발자에 따라 개발 방식의 차이가 있을 수 있기 때문에, 유지보수가 중요한 프로젝트의 경우 부적합
* 국내의 대부분 프로젝트는 XML 만을 이용해서 SQL 문을 작성하고, 별도의 DAO 를 만드는
방식을 선호한다고 함.
최대장점은 SQL 문을 온전히 분리해서 처리하기 때문에, 향후 SQL 문의 변경이 일어날 때,
대처가 수월하다는 점
* 개발 순서를 알아두면 좀 더 수월할 것 같아서 기록함
* MyBatis 를 XML 을 사용하여 작성하는 경우의 코딩순서
1. 테이블 생성 및 개발 준비
2. 테이블 생성 및 기타 데이터베이스 관련 설정
3. 도메인 객체의 설계 및 클래스 작성
4. DAO 인터페이스의 작성
5. 실행해야 하는 기능을 인터페이스로 정의
6. XML Mapper 의 생성과 SQL 문 작성
7. XML 작성 및 SQL 작성
8. MyBatis 에서 작성된 XML Mapper 를 인식하도록 설정
9. DAO 구현
10. DAO 인터페이스를 구현한 클래스 작성
11. 스프링상에 DAO 등록 및 테스트
1. 테이블 생성 및 개발 준비
MySql 을 실행 후
zerock 계정으로 들어감
create table
regdate 는 최초 입력된 시각을 기록하기 위한 것이고
updatedate 는 최종 수정된 시각을 기록하기 위한 것임
2. 도메인 객체의 설계 및 클래스 작성
도메인 이라는 용어
ex) 쇼핑몰을 예로 들어 회원, 상품, 배송 등과 같은 용어가 도메인 이라고 함
sr/main/java 아래 org.zerock.domain 하위에 MemberVO 생성 (도메인 클래스 생성)
getter , setter , toString 까지 생성 생성 ~
3. DAO 인터페이스의 작성 ( class 아님 Interface 파일임!!! )
sr/main/java 아래에 org.zerock.persistence 패키지를 생성한 뒤 DAO 생성
4. XML Mapper 의 저장경로 생성 과 XML Mapper 의 작성
DAO 에서 사용하는 SQL 문을 작성하는 것 / MyBatis 에서 SQL 문을 저장하는 존재를 Mapper 라는 용어로 표현
Mapper 의 저장 경로 생성 및 XML Mapper 의 생성
5. MyBatis 에서 작성된 XML Mapper 를 인식하도록 설정
작성된 mappers 폴더 내에 어떤 폴더이건 관계없이 파일의 이름이 'Mapper.xml' 로 끝나면 자동으로 인식하도록 설정하는 것
root-context.xml 파일을 열어서 property name mapperLocations 를 추가함
추가할 내용 : <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
6. DAO 인터페이스의 구현
MyBatis 에서 DAO 를 이용하는 경우는 SqlSessionTemplate 이라는 것을 이요해서 DAO 를 구현하므로
SqlSessionTemplate 을 설정하는 작업부터 함
root-context.xml 를 열어서 sqlSession bean 을 추가함
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
7. DAO 인터페이스를 구현한 클래스 작성
@Repository 애노테이션은 DAO 를 스프링에 인식시키기 위해서 주로 사용
8. 스프링상에 DAO 등록 및 테스트
MeberDAOImpl 이 @Repository 애노테이션 설정으로 스프링에 인식되더라도
스프링에서 해당 페이지를 스캔하지 않으면 제대로 스프링의 빈으로 등록 되지 못함
그래서 root-context.xml 에 설정 추가!
<context:component-scan base-package="org.zerock.persistence"></context:component-scan>
src/test/java 하위에 org/zerock/web 에 MemberDAOTest 파일 생성
MemberDAOTest.java 우클릭 --> Run As -->JUnit Test 클릭하여 테스트 실행
JUnit 실행 결과 로그
생성된 tbl_member 테이블의 1개 로우를 MySQL 에서 조회
학습한 내용을 정리 정리~
출처 : 코드로 배우는 스프링 웹 프로젝트
저자 : 구멍가게 코딩단
'스프링' 카테고리의 다른 글
spring mySql MyBatis 연동 라이브러리 (0) | 2018.09.01 |
---|---|
스프링 MyBatis MySQL 설정 2 (0) | 2018.09.01 |
스프링 MyBatis MySQL 설정 1 (0) | 2018.08.26 |
STS The import org.junit cannot be resolved 에러 (0) | 2018.08.25 |