본문 바로가기

더 나은 엔지니어가 되기 위해/지금은 안쓰는 자바

[스프링 부트 개념과 활용] 데이터 1. DB 연동

인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다.

h2 사용법

인메모리 데이터베이스 h2 를 사용하는 법을 알아보자.

1) dependency 추가

pom.xmlh2spring-boot-starter-data-jdbc 라이브러리를 추가한다.

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

2) DataSourceConnection 로 연동하기

ApplicationRunnner 로 DB에 데이터를 넣어보는 프로그램을 실행시켜보자.
먼저 DataSource 로 부터 Connection 을 받아와 DB 연산을 수행할 수 있다.

@Component
public class H2Runner implements ApplicationRunner {

  @Autowired
  DataSource dataSource;

  @Override
  public void run(ApplicationArguments args) throws Exception {
    try(Connection connection = dataSource.getConnection()) {

      Statement statement = connection.createStatement();
      String sql = "CREATE TABLE USER(ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id))";
      statement.executeUpdate(sql);
    }
  }
}

3) JdbcTemplate 으로 연동하기

또는 jdbc 를 이용해 더 편하게 이용할 수도 있다.

@Component
public class H2Runner implements ApplicationRunner {

  @Autowired
  JdbcTemplate jdbcTemplate;

  @Override
  public void run(ApplicationArguments args) throws Exception {
    String sql = "INSERT INTO USER VALUES (1, 'heumsi')";
    jdbcTemplate.execute(sql);
  }
}

4) h2-console 로 브라우저에서 DB 내용 확인하기

h2 는 직접 데이터베이스 클라이언트 콘솔로 들어가지 않고, 브라우저를 통해서 접속할 수 있다.
이를 위해, 먼저 application.properties 에 다음 설정을 준다.

spring.h2.console.enabled=true

이제 앱을 구동시킨 뒤, localhost:8080/h2-console 로 접속한다.
JDBC URLjdbc:h2:mem:testdb 값을 준 뒤, 연결 버튼을 누르면 h2 DB 에 접속하게 된다.

MySQL 사용법

오픈소스로 공개되어있는 RDB 인 MySQL 을 사용해보자.

1) dependency 추가

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

2) database 커넥션 설정

application.properties 에 db 의 urlusername, password 을 적어준다.

spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username={usrename}
spring.datasource.password={password}

이 후, 연동된 DB 를 사용하는법은 h2 에서 한 것과 동일하다.

3) 타임존 설정

MacOS 에서 MySQL 을 사용할 때, 타임존 설정 문제 때문에 에러가 발생하는데, 다음과 같이 /etc/my.cnf 파일에 세팅할 타임존을 적어주면 된다.

$ sudo vi /etc/my.cnf
[mysqld]
2 default-time-zone='+9:00'

이후 mysql 을 restart 해주면 적용된다.

PostgreSQL 사용법

1) dependency 추가

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
</dependency>

2) database 커넥션 설정

application.properties 에 db 의 urlusername, password 을 적어준다.

spring.datasource.url=jdbc:posgresql://localhost:5432/springboot
spring.datasource.username={usrename}
spring.datasource.password={password}

이 후, 연동된 DB 를 사용하는법은 h2 에서 한 것과 동일하다.