
MyBatis - DB 연결
- DataSource 설정
- DriverManagerSource를 사용해서 DB에 연결할 때 필요한 URL, 계정 정보, 드라이버 등 입력
- SqlSessionFactory 설정
- MyBatis의 핵심적인 역할
- SQL 세션 생성 및 데이터베이스와 연결
- SqlSessionTemplate 설정
- SqlSession의 구현체
- 트랜잭션 관리, 예외 변환 등 Spring과의 연동 쉽게 해줌
- SqlSessionTemplate를 통해 DB 접근 간소화 및 안전한 트랜잭션 처리
- Mapper 인터페이스 정의 및 구현
- 데이터베이스의 CRUD 작업을 위해 MyBatis Mapper 인터페이스와 XML Mapper 파일 정의
- Spring이 @Mapper나 @Repository를 통해 매핑된 인터페이스를 자동으로 찾아 sqlSession으로 실행하도록 함
- Service에서 비즈니스 로직 수행 및 Mapper 호출
- Controller에서 사용자 요청을 받고 Service를 통해 데이터 전달받아 뷰에 전달
MyBatis-Spring
- Spring Framework와 MyBatis를 쉽게 통합할 수 있도록 해줌
- Spring에서 MyBatis 매퍼를 쉽게 관리하고 사용할 수 있도록 지원
- 설정된 SQL 매핑을 기반으로 데이터베이스와 상호작용할 수 있음.
- 의존성

- 주요 기능
- Spring에서 MyBatis SQL 매퍼를 빈으로 등록하고 주입할 수 있도록 지원
- 트랜잭션 관리와 연계하여 데이터베이스 작업 중 발생할 수 있는 오류에 대한 롤백과 같은 기능 설정
Spring Transaction(spring-tx)
- Spring에서 제공하는 트랜잭션 관리 기능 제공
- 데이터베이스 작업 중 오류 발생 시 자동으로 롤백하거나 커밋을 수행하는 등 트랜잭션 경계를 쉽게 설정할 수 있음
- 의존성

- 주요 기능
- 어노테이션을 통해 선언적 트랜잭션 관리를 설정할 수 있음(@Transactional)
- AOP를 통해 트랜잭션이 시작되고 커밋 또는 롤백되는 시점을 세밀하게 조정 가능
MyBaits와 MySQL 연동(DriverManagerDataSource, SqlSessionFactoryBean 설정)
- db 빈 설정(DriverManagerDataSource)

- MySQL 데이터베이스와 연결하기 위한 DataSource 서렂ㅇ
- DriverManagerDataSource 클래스를 사용하여 데이터베이스 연결에 필요한 드라이버, URL, 사용자 이름 및 비밀번호 정보 제공
- 설정 항목
- driverClassName
- MySQL JDBC 드라이버 클래스 이름
- com.mysql.cj.jdbc.Driver 사용
- URL
- MySSQL 데이터베이스 접속 URL
- useSSL= false, serverTimezone=UTC : MySQL 연결 시 발생할 수 있는 경고나 타임존 문제 해결에 사용
- username
- password
- sqlSessionFactory 빈 설정(SqlSessionFactoryBean)

- MyBatis와 Spring의 통합을 위해 MyBatis SQL 세션을 생성하는 SqlSessionFactoryBean 설정
- SqlSessionFactoryBean는 MyBatis가 SQL 쿼리를 실행할 때 사용되는 세션 팩토리 역할
- 설정 항목
- dataSpirce
- 위에서 설정한 db 빈을 참조하여 데이터베이스 연결에 사용
- mapperLocations
- configLocation
- MyBatis 설정 파일의 위치
- MyBatis 설정 관련 여러 옵션 정의
MyBatis 매퍼 파일

- 현재는 빈 상태이지만 여기에 SQL 쿼리를 작성하여 MemberMapper 인터페이스와 연결 가능
MyBatis 전역 설정 파일

- typeAliases 설정을 통해 MemberVo 클래스를 간단하게 mv라는 별칭으로 사용 가능

sqlSession Bean, component-scan
- sqlSession Bean

- SqlSessionTemplate은 MyBatis의 SqlSession 인터페이스 구현, SQL 세션 관리
- sqlSessionFactory를 생성자 인자로 받아 MyBatis의 데이터베이스 연결과 SQL 매핑 설정 활용
- sqlSession 객체를 통해 MyBatis 매퍼 호출, SQL문 실행
- SqlSessionTemplate은 자동으로 트랜잭션 관리 -> 직접 세션을 열고 닫을 필요 없음
- component-scan

- Spring이 com.myaws.myapp 패키지 내의 컴포넌트를 스캔해 @Repository, @Service, @Component로 정의된 Bean을 자동으로 등록
- 스캔 시 @Controller가 붙은 클래스 제외
- Controller 클래스는 다른 설정에서 관리
- Service, Repository 등 비즈니스 로직 관련 클래스들만 스캔하여 Spring Bean으로 등록