복습을 위한

DataSource사용하기 본문

JDBC

DataSource사용하기

ho042479 2024. 1. 30. 17:57

스프링부트2.0부터는 기본적으로 Spring Boot의 데이터베이스와 관련된 스타터 의존성을 추가하면, 해당 스타터가 자동으로 필요한 라이브러리 및 구성을 가져오기 때문에 별도로 HikariCP를 명시적으로 추가할 필요가 없다. 스프링 스타터에서 패키지를 추가해 다운받아주자. 

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    // 또는 implementation 'org.springframework.boot:spring-boot-starter-jdbc'
}

 

이렇게 되어있을거다.  그럼 따로 설정할 필요없다. 없으면 의존성을 추가해주자. 

 

 

 

 

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

우리가 사용할 데이터베이스 연결 정보를 설정해주자.

 

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        return dataSource;
    }
}

 

뭐 이런 식으로 직접 설정 클래스를 작성해도된다.  해당 DataSource 빈이 Spring 애플리케이션 컨텍스트에 등록되며, 이를 이용하여 JDBC 작업을 수행할 수 있다.

단, 주의할 점은 위의 방법은 데이터베이스 연결 정보를 코드에 직접 노출시키는 것이므로, 보안상의 이유로 실제 프로덕션 환경에서는 권장되지 않는다. application.properties 또는 application.yml을 사용하여 외부에 민감한 정보를 노출하지 않도록 하는 것이 보다 안전하다..

 

 

@Repository
public class MyJdbcRepository {

    private final DataSource dataSource;

    public MyJdbcRepository(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public Member save(Member member) throws SQLException{
    
    로직.........

 

이제 그리고 의존성 주입받고 사용하면 된다.

로직에서  dataSource.getConnection();을 통해 connection객체를 받아 사용하자. 스프링은 hikariCP를 기본적으로 사용한다.

 

 

 

 

 

DataSource 는 커넥션을 획득하는 방법을 추상화 하는 인터페이스이다.

이 인터페이스의 핵심 기능은 커넥션 조회 하나이다. (다른 일부 기능도 있지만 크게 중요하지 않다.)

 

 public interface DataSource { 
 Connection getConnection() throws SQLException; }

 

 

 

대부분의 커넥션 풀은 DataSource 인터페이스를 이미 구현해두었다.

따라서 개발자는 DBCP2 커넥션 풀 , HikariCP 커넥션 풀 의 코드를 직접 의존하는 것이 아니라 DataSource 인터페이스에만 의존하도록 애플리 케이션 로직을 작성하면 된다. 커넥션 풀 구현 기술을 변경하고 싶으면 해당 구현체로 갈아끼우기만 하면 된다.

 

 

 

 

 

 

 

참고 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1

 

'JDBC' 카테고리의 다른 글

커넥션 풀  (0) 2024.01.30
DriverManager, Connection, Statement, ResultSet  (2) 2024.01.30