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을 주입하여 위 메서드를 사용할 수 있다