본문 바로가기

Spring/Spring JDBC

[Spring] [Spring JDBC] 3. Spring JDBC 실습 진행

들어가기 전

maven archetype의 maven-archetype-quickstart로 프로젝트를 생성하였다.

spring Initializer로 하지 않았다는 것을 알고 있자.

(정확한 차이는 모르겠지만, maven-archetype-quickstart으로 진행하는 것이 dependency 설정을 더 자잘하게 해주는 느낌이다. spring-context, spring-jdbc, spring-tx 를 추가하기 때문)

 

1. pom.xml에 필요한 dependency 추가하기

  • spring-context
  • spring-jdbc
  • spring-tx
  • mysql driver
  • datasource(apache에서 제공하는 datasource)
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${spring.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>${spring.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>${spring.version}</version>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.30</version>
</dependency>

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-dbcp2</artifactId>
  <version>2.2.0</version>
</dependency>

 

2. config 파일 작성하기

1. ApplicationConfig

  • @Import : DBConfig.class를 설정 파일로 import 하겠다는 어노테이션
@Configuration
@Import({DBConfig.class})
public class ApplicationConfig {

}

2. DBConfig

  • DB와 연결을 맺기 위한 설정을 작성
  • dataSoruce를 빈으로 등록해야 한다. 
@Configuration
@EnableTransactionManagement // 트랜잭션 때문에 필요함
public class DBConfig {
    private static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/connectdb?useUnicode=true&characterEncoding=utf8";
    private static final String USERNAME = "connectuser";
    private static final String PASSWORD = "connect123!@#";

    @Bean // 커넥션을 관리하는 객체(jdbc 드라이버, url 등등 알아야함). 빈으로 등록해주어야 한다
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(DRIVER_CLASS_NAME);
        dataSource.setUrl(URL);
        dataSource.setUsername(USERNAME);
        dataSource.setPassword(PASSWORD);
        return dataSource;

    }
}

3. DB와 연결 되는지 확인해보기

  1. 공장에 설정 파일을 넣어서, 스프링 컨테이너 생성
  2. 스프링 컨테이너에서 DataSource 객체를 하나 얻어온다
  3. 얻은 DataSource 객체의 getConnection() 메서드를 통해, Connection 얻기!
    • connection을 얻었으면, 닫는 코드를 작성해주어야 한다
    • close()는 throw가 필요하기 때문에, try-catch로 작성한다

 

public class DataSourceTest {
    public static void main(String[] args) {
        ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
        DataSource ds = ac.getBean(DataSource.class);
        Connection conn = null;
        try {
            conn = ds.getConnection();
            if (conn != null) {
                System.out.println("접속 성공");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    }
}