24.11.01(Spring 설정)

jiiiiiiiArchive.·2024년 11월 1일

🤯지식주머니🤯

목록 보기
46/98
post-thumbnail

MyBatis - DB 연결

  1. DataSource 설정
  • DriverManagerSource를 사용해서 DB에 연결할 때 필요한 URL, 계정 정보, 드라이버 등 입력
  1. SqlSessionFactory 설정
  • MyBatis의 핵심적인 역할
  • SQL 세션 생성 및 데이터베이스와 연결
  1. SqlSessionTemplate 설정
  • SqlSession의 구현체
  • 트랜잭션 관리, 예외 변환 등 Spring과의 연동 쉽게 해줌
  • SqlSessionTemplate를 통해 DB 접근 간소화 및 안전한 트랜잭션 처리
  1. Mapper 인터페이스 정의 및 구현
  • 데이터베이스의 CRUD 작업을 위해 MyBatis Mapper 인터페이스와 XML Mapper 파일 정의
  • Spring이 @Mapper나 @Repository를 통해 매핑된 인터페이스를 자동으로 찾아 sqlSession으로 실행하도록 함
  1. Service에서 비즈니스 로직 수행 및 Mapper 호출
  2. 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
        • MyBatis 매퍼 파일의 윛 ㅣ지정
      • 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으로 등록
profile
이것저것 다 적는 기록장📚

0개의 댓글