요르딩딩

context-mapper.xml 본문

[Spring Doc]/[context-*.xml]

context-mapper.xml

요르딩딩 2021. 9. 15. 14:29
728x90
반응형

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

 

728x90
반응형

'[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
Comments