본문 바로가기
Spring/DB연동

SqlSessionFactoryBean , MapperScan , DataSource

by doriver 2024. 4. 25.

SqlSessionFactoryBean

org.mybatis.spring . SqlSessionFactoryBean

Spring 프레임워크와 MyBatis를 통합하여 사용할 때 중요한 클래스
Spring애플리케이션에서 MyBatis의 SqlSessionFactory를 설정하고 구성하는 데 사용됨


MyBatis의 SqlSessionFactory를 SpringBean으로 구성해줌


MyBatis설정 파일, DataSource 등의 설정을 사용하여 SqlSessionFactory를 생성

 

 

 

 

MapperScan

org.mybatis.spring . annotation . MapperScan

Spring애플리케이션에서 MyBatis Mapper를 스캔하고 등록하는 데 사용되는 어노테이션

 

XML구성 파일이나 Java설정 클래스에서 Mapper위치를 하드코딩하지 않고

, 해당 패키지 및 하위 패키지에 있는 모든 Mapper를 스캔하여 Spring Bean으로 등록 가능하게 해줌

보통 @Configuration 어노테이션이 붙은 클래스에 사용하여 Spring의 ApplicationContext를 구성함

@Configuration
@MapperScan( basePackages = {"com.example.mapper1", "com.example.mapper2"} )
public class MyBatisConfig {
    // MyBatis 및 기타 설정
}


@MapperScan( basePackages="com.sample.project" )

 

Mapper

@Mapper이 붙은 인터페이스

MyBatis프레임워크에서 데이터베이스와의 상호 작용을 위해 사용되는 인터페이스
MyBatis의 XML매퍼 파일에서 정의된 SQL쿼리를 Java메서드로 매핑하는 역할

 

DataSource

javax.sql.DataSource

Java에서 데이터베이스와의 연결을 관리하기 위한 인터페이스
JDBC(Java Database Connectivity)를 통해 데이터베이스와 상호 작용할 때 사용
커넥션 풀을 관리, JDBC 연결을 관리, 트랜잭션 관리 및 기타 데이터베이스 관련 작업을 수행하는 데 사용

 

안정적이고 효율적인 데이터베이스 액세스를 가능하게 함

일반적으로 DataSource는 데이터베이스 제공업체(vendor)에 따라 구현체가 다를 수 있다. 각 제공업체는 자체적으로 DataSource를 구현하여 해당 데이터베이스에 연결할 수 있도록 함

 

 

스프링 설정 클래스에서 @Bean어노테이션이 붙은 메서드는 스프링 컨테이너에 의해 호출되며

@Bean 어노테이션을 사용하여 메서드를 정의할 때, 메서드의 인자로 다른 빈을 받을 수 있다. 

이러한 빈은 스프링 컨테이너에 의해 관리되는 다른 빈이어야 하며, 메서드의 인자로 정의된 빈은 스프링 컨테이너로부터 주입된다.

스프링 부트에서는 application.properties 또는 application.yml 파일에 설정한 데이터베이스 관련 정보를 기반으로 DataSource 빈이 생성됨

 

이렇게 생성된 DataSource빈은 다른 스프링 빈들이 이를 주입받아 데이터베이스와의 연결을 수행할 수 있게 됩니다.

커넥션 풀

데이터베이스와의 연결을 미리 생성하여 풀에 저장하고, 요청이 있을 때마다 이 연결을 재사용하여 데이터베이스 연결 비용을 줄입니다.