이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
파업 진짜 싫다😢
MyBatis
- MyBatis 는 자바 퍼시스턴스(영구저장) 프레임워크 의 하나이다.
- XML 이나 annotation 을 사용하여 저장 프로시저나 SQL 문으로 객체들을 연결시킨다.
- 퍼시스턴스(Persitence) 애플리케이션을 종료 후 실행 시 이전에 저장한 데이터를 다시 불러 올 수 있는 기술
- MyBatis 는 DB C.R.U.D 를 다루는 클래스 및 설정 파일들을 가지고 있어 자체 처리가 가능 하다.(creat, read, update, delete)
- 그래서 MyBatis 를 활용하면 JDBC 프로그래밍을 아주 간단하게 해결할 수 있다.
web.xml
servlet-context.xml
MyBatis 를 이용한 Crud 구현
pom.xml
- MyBatis 를 활용하기 위해서는 다음의 라이브러리가 추가로 필요하다.
- spring-jdbc.jar, mybatis.jar, mybatis-spring.jar
servlet-context.xml
- DB 접속 정보와 Mapper 설정, SqlSessionTemplate 사용을 위한 설정도 추가해야 한다.
DataSource 에 들어갈 정보 생성
마이바티스 에서 xml 사용 설정
마이바티스를 사용할 패키지 지정
Mapper
- SQL 을 표현한 Mapper.xml 과 이를 연결해 줄 Interface 를 구현한다.
- I.O.C : DB 접속, 쿼리 실행, 자원반납, resultStet 생성 등이 자동으로 된다.
- D.I : 작업에 필요한 내용을 xml 에 등록(빈등록) 해놓으면 필요한 곳에서 사용한다.
- 변경사항이 생기면 xml 내용만 바꿔주면 된다.
Spring 의 특징
1) 제어 역행 (I.O.C : Inversion Of Control ) 지원하여 필요에 따라 스프링이 사용자 코드를 호출 (내가 입력하지 않아도 설정만 해주면 스프링에서 알아서 해줌
2) 의존성 주입 (D.I : Dependency Injection) 을 지원하여 느슨한 결합을 유지
- Class A 가 B 를 직접 호출 하지 않고 Bean 에 등록하여 사용 (DI) 함으로써 두 클래스간 결합도가 낮아진다.(Bean 만 수정하면 됨_
- 그리고 이 연결은 사용자가 아닌 Spring 이 관리 (IOC) 한다.
3) Spring Framework 에서 객체 자원을 효율적으로 관리해 준다.
4) AOP(Aspect Orient Programming) 을지원 한다 .(AOP 에서 자세히 설명할 예정)
SPRING 프로젝트 생성 과정
기본 프로젝트 생성(3단계 패키지)
web.xml 확인
- 설정 파일 위치, 한글 깨짐 방지
- 실행
버전 변경(project facet, pom.xml)
패키지, 클래스 생성(Controller, Service)
라이브러리 추가(pom.xml)
- spring-jdbc : 연결할 때 파라미터들에 대한 정의, SQL, 파라미터 선언과 값(DTO) , 기능 들에 대해서만 정의를 해주도록 하는 라이브러리
mybatis : Mybatis는 파라미터를 수집해서 SQL문을 처리해주고 템플릿 메소드 패턴을 이용해서 예외 처리를 해줌
mybatis-spring : ??
servlet-context.xml 에 설정 추가
- 접속 정보(datasource)
- mapperLocations
- mybatis 사용 패키지 영역
- mybatis-spring 빨간 줄 > Namespaces 들어가서 체크
Interface, mapper 생성
- Interface 생성
- 자바 클래스 타입과 xml 을 연결하기 위해서 interface 로 규격화해줌
- mapper 생성
- 하나의 타입으로 들어올 땐 타입을 따로 써줄 필요 없지만 여러 타입으로 들어올 때는 타입을 써줄 필요가 있음
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- 실행
기본적인 DB 접속 기능 구현 후 실행
controller
service
DTO(bean)
으아아아악
🤷♀️🤷♀️