MyBatis(iBatis)
마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크
JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다.
DB 레코드에 원시타입과 Map 인터페이스, 자바 POJO를 설정해서 매핑하기 위해 XML과 어노테이션을 사용
DB/SQL 관련 동작을 쉽게 처리해주는 프레임워크 = SQL Mapper 라이브러리
- DB연결, Try-Catch-finally 구문, pstmt, rs 구문을 훨씬 간결하게 처리
- spring과 연동이 매웅 편함 (MyBatis-spring 라이브러리)
- 동적 sql 구문 사용 가능(= 코드 제어)
*MyBatis 사용방식
1. XML만 사용하여 SQL구문을 처리, DAO에서는 XML코드를 찾아서 실행함
장점 : SQL 쿼리 수정 및 유지보수가 편함
단점 : 개발 분량이 증가, 복잡도 증가
2. 어노테이션 & 인터페이스를 사용한 SQL구문 사용
장점 : DAO객체 없이도 개발 가능, 생산성 증가
단점 : SQL 애너테이션으로 생성하기 때문에 수정할 때 마다 매번 컴파일을 해야함
3. 인터페이스 + XML 모두 활용
장점 : 간단한 구문은 애노테이션, 복잡한 구문은 XML코드로 표현함
단점 : 개발자에 따라 간단/복잡의 기준이 다름
1. 기본설정 pom.xml
: MVNREPOSITORY 에서 Mysql connector, myBatis, myBatisSpring, spring-jdbc, spring test-context framework 다운
2. Maven 업데이트
3. root-context.xml설정
- DataSource 객체
DataSource 객체는 DB의 모든 리소스를 지칭하는 포괄적인 개념으로 JDBC 2.0 표준의 확장 API로 처음 소개되었음
=JDBC를 이용해 DB에 연결 해주는 객체!
* DataSource 객체 관련 내용
** 연결됐는지 확인하기!
src/main/resource에 mybatis-config.xml 파일 생성 > dtd 추가!
- sqlSessionFactory 객체 생성
: DB연결, mybatis 설정, mapper 연결 해주는 객체
4. Mybatis 연결됐는지 테스트하기
*datasource객체, sqlsessionFactory 객체 생성
* 마이바티스 연결 테스트
* 마이바티스 연결 체크
> @test 어노테이션 꼭 붙이기!!
5. Mapper 만들기
- scr/main/resource 밑에 mapper 폴더 생성 > memberMapper.xml 생성
- dtd 가져오기
- mapper namespace 생성 > 내가 만든 이름 : 외부에서 호출할 때 사용
- 지금 시간을 가져오는 sql 작성
6. 이 mapper를 인식할 수 있게 root-context.xml에서 경로 설정
7. sqlSessionTemplate 객체 생성
8. 데이터 베이스 생성
9. 테이블 생성 & 설정
10. 도메인 객체 설계, 클래스 생성(MemberVO) & getter,setter 생성
11. root-context.xml에 persistence 패키지 추가
12. DAO인터페이스 생성(MemberDAO) & 인터페이스 안에 내가 필요한 동작 구현(추상메서드로)
13. DAO객체 생성(/SpringMVC/src/main/java/com/itwillbs/persistence/MemberDAOImpl.java)
=>memberDAO를 임플리먼츠했음
@repository 하면 옆에 S표시
14. 임플리먼츠에 디비연결정보가 필요함 => 의존주입
- 쿼리 구문 가져오기
- mapper 주소값 저장
- 결과 값 저장
15. 테스트하기
에러...
>>>root-context에서는 mappers로 작성해놨는데
실제 폴더명을 mapper로 해놨었음....
다시 테스트하면 정상적으로 작동함
'STUDY > SPRING' 카테고리의 다른 글
spring - 회원가입(MyBatis - DB연결 연습) (0) | 2022.06.09 |
---|---|
spring ========Mybatis로 DAO와 DB를 연결 ======= (0) | 2022.06.08 |
Spring - Legacy Project 만들기 (0) | 2022.06.07 |
Spring 기초 관계 (0) | 2022.06.07 |
spring 설치하기 (0) | 2022.06.03 |