GrowMe

[Spring 설정]Mybatis와 SqlSessionTemplate 본문

About Spring

[Spring 설정]Mybatis와 SqlSessionTemplate

오늘도 타는중 2022. 6. 12. 21:40

*MyBatis?

  • SQL Mapping Framework : 편리하게 데이터베이스에 엑세스할 수 있는 프레임워크
  • 자바 코드로부터 SQL문을 분리해서 관리
  • 작성할 코드가 줄어 생산성 향샹 & 유지 보수 편리 ( E = mc^2)
  • 스프링 뿐 아니라 다른 언어와도 결합 가능
  • 쿼리문을 수행해주는 PreparedStatement를 직접 생성할 필요없이, 내부적으로 자동 처리
  • #{필드명} -> vo.get필드명(); -> 필드명과 일치하는 getter 메서드 호출 후 값 반환

*SqlSessionTemplate?

  • MyBatis 쿼리문을 수행해주는 역할
  • MyBatis 3.0 이전에 사용하던 방식
  • DAO 클래스에 직접 SqlSession 객체를 선언, @Autowired로 의존주입해 쿼리문을 수행

1. root-context.xml에 SqlSessionFactory 빈 등록

  • SqlSessionFactory : 데이터베이스와의 연결 및 SQL 실행에 대한 모든 것을 가진 가장 중요한 객체
    --> SqlSession을 생성하여 제공
  • SqlSession : SQL 명령을 수행하는데 필요한 메서드 제공
  • dataSource를 참조하여 MyBatis와 Mysql 서버를 연동시켜준다
  • MyBatis는 SQL Mapping 프레임워크로서 별도 설정 파일을 가질 수 있다.
    src/main/resource 경로에 mybatis-config.xml 파일 추가 ->  root-context.xml에 configLocation 속성 추가
  • 'mapperLocations' 속성 : MyBatis의 xml 파일이 Mapper 클래스와 클래스패스(직전 경로)가 다를경우
    Mapper 파일의 경로 따로 지정
    --> 와일드카드 매핑 : /mappers 폴더안에 /*Mapper.xml로 끝나는 파일은 DAO 설정파일로 모두 읽는다

*datasource


2. SqlSessionTemplate - sqlSessionFactory와 연결

  • MyBatis 쿼리문 수행 객체를 설정 : sqlSession
  • constructor-arg : 생성자를 통한 의존성 DI 설정 (ref가 bean의 id를 호출함)
  • DAO 메서드 인자값으로 "key" key 이름을 부여
  • 쿼리문을 수행하는 xml파일(ex : boardMapper.xml)의 <select> 등의 태그의 id 속성에 동일한 key 이름으로 지정 - DAO 메서드와 연동 --> DAO 파일의 "key"== Mapper 파일의 id / DAO 파일의 key == 쿼리문에서 수행할 변수(매개변수)

* SqlSession의 주요 메서드

  • @Autowired에 SqlSession을 주입하여 위 메서드를 사용할 수 있다
Comments