요르딩딩
context-mapper.xml 본문
Mybatis란
Java 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 Sql Mapper 입니다.
MyBatis의 특징
1. 쉬운 접근성과 코드의 간결함.
- JDBC의 모든 기능을 MyBatis가 대부분 제공합니다.
- 깔끔한 소스코드를 유지할 수 있습니다.
- 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있습니다.
2. SQL문과 프로그래밍 코드의 분리.
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 됩니다.
- SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수도 있다.
3. 다양한 프로그래밍 언어로 구현가능
- Java, C#, .NET , Ruby
MyBatis3의 주요 컴포넌트의 역할
- MyBatis 설정파일(SqlMapperConfig.xml) : 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다.
- SqlSessionFactoryBuilder : MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다.
- SqlSessionFactory : SqlSession을 생성한다.
- SqlSession : 핵심적인 역할을 하는 클래스로서 SQL 실행이다 트랙잭션 관리를 실행한다. SqlSession 오브젝트는 Thread-Safe 하지 않으므로 thread마다 필요에 따라 생성한다.
- Mapping 파일(member.xml) : SQL문과 OR Mapping을 설정한다.
참고 : https://dog-developers.tistory.com/25?category=850439
<SqlSessionFactory>
<bean id="sqlSessionFactoryAAA" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourceAAA" />
<property name="configLocation" value="classpath:/mapper/config/sql-mapper-AAAconfig.xml" />
<property name="mapperLocations" value="classpath:/mapper/AAA/*.xml" />
Database Connection Pool(DBCP)
: JDBC를 통하여 DB에 연결할 경우, 매번 드라이버를 로드하고 Connection 객체를 가져와야하는데 매우 비효율적이다.
이를 해소하기 위해 웹 컨테이너가 실행되면서 DB와 연결된 Connection 객체를 미리 Pool에 생성해두고 필요할 때에 가져다쓰고 반환한다.
DB의 부하를 줄이고 유동적으로 연결을 관리할 수 있다.
SessionFactory
: 단일 데이터 저장소, 안정적인 스레드를 위한 목적으로 사용된다.
SessionFactory를 사용함으로서 다수의 스레드가 DB세션에 동시에 접근가능하며 특정 데이터베이스에 매핑된 캐시가 변하지 않는다.
SessionFactory는 프로그램이 실행될 때만 생성되고 프로그램 내의 소스코드가 이에 접근할 수 있도록 Singleton형태를 지닌다.
SqlSessionFactory
데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체이다.
이 객체가 DataSource를 참조하여 MyBatis와 Mysql 서버를 연동시켜줍니다.
config
MyBatis는 SQL Mapping 프레임워크로 별도의 설정 파일을 가질 수 있다.
[Mybatis에 별도의 설정을 주고 싶을떄 ]
1. mybatis-config.xml파일을 이용
2. sqlSessionFactory에 다음과 같이 configLocation 속성을 추가
=>별도의 설정파일이 필요한 다른 이유는 마이바티스 XML파일이 매퍼 클래스와 동일한 classpath에 있지 않은 경우
(예를 들어 mybatis 제너레이터를 따로 사용하는 경우)
Spring + MyBatis 를 사용하면, DataSource 과 SqlSessionFactory 를 정의해서 빈으로 주입시켜줘야한다.
1. configLocation : mybatis 설정파일이 위치한 경로를 지정 (주로 mybatis-config.xml 위치)
2. mapperLocations : Mapper 를 스캔하기 위한 XML 파일 경로 지정 (*mapper.xml 파일들이 모여있는 위치)
SessionFactory에 DatabaseSource를 주입하여 DB와의 연결통로를 만들고, 각 DAO에서 DB와의 연결을 사용하기 위해 SessionTemplate을 주입한다.
<MapperScannerConfigurer>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="mapper.AAA" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryAAA" />
MapperScannerConfigurer
- Mapper 인터페이스의 수가 많아지면 MapperScannerConfigurer를 이용하여 Mapper 인터페이스의 객체를 한 번에 등록하는 것이 편리함.
- MapperScannerConfigurer를 이용하면 지정한 패키지 아래 모든 인터페이스가 Mapper 인터페이스로 간주되어 Mapper 인터페이스의 객체가 DI 컨테이너에 등록되는 것이다.
- basePackage 속성에서 지정하는 것은 Mapper 인터페이스를 검색할 대상이 되는 Package
'[Spring Doc] > [context-*.xml]' 카테고리의 다른 글
context-transaction.xml (0) | 2021.09.15 |
---|---|
context-scheduler.xml (0) | 2021.09.15 |
context-datasource.xml (0) | 2021.09.15 |