[SpringBoot] 스프링부트, mysql 데이터베이스 연결
2022. 12. 22. 12:49ㆍJAVA/Spring
1. 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'mysql:mysql-connector-java'
2. docker container를 사용한 MySQL 추가
우분투 운영체제에 다음과 같은 docker 명령어를 실행하여 mysql 컨테이너를 생성하여 실행시킵니다.
$ docker run -p 3306:3306 —name mysql_boot -e MYSQL_ROOT_PASSWORD=1
-e MYSQL_DATABASE=springboot -e MYSQL_USER=yonghwan -e MYSQL_PASSWORD=pass -d mysql
mysql_boot 컨테이너에 bash를 실행하여 들어갑니다.
$ docker exec -i -t mysql_boot bash
yonghwan 계정으로 들어가서 테이블이 있는지 조회합니다.
bash-4.4 # mysql -u yonghwan -p
Enter Password:
mysql> use springboot
mysql> show tables;
실행 결과 아직 테이블을 존재하지 않을 것입니다.
3. 데이터소스 설정
resource/application.properties
spring.datasource.hikari.maximum-pool-size=4
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=yonghwan
spring.datasource.password=pass
4. 데이터베이스 연결 테스트 코드 추가
@Component
@RequiredArgsConstructor
@Slf4j
public class MySqlRunner implements ApplicationRunner {
private final DataSource dataSource;
private final JdbcTemplate jdbcTemplate;
@Override
public void run(ApplicationArguments args) {
try(Connection connection = dataSource.getConnection()){
log.info(String.valueOf(dataSource.getClass()));
log.info(connection.getMetaData().getURL());
log.info(connection.getMetaData().getUserName());
Statement stmt = connection.createStatement();
String sql = "CREATE TABLE USERS (ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (ID))";
stmt.executeUpdate(sql);
}catch (SQLException e){
log.info("SQLException 발생 : " + e);
}
jdbcTemplate.execute("INSERT INTO USERS VALUES(1, 'yonghwan')");
}
}
애플리케이션을 실행하고 docker mysql container의 데이터베이스를 확인합니다.
References
source code : https://github.com/yonghwankim-dev/springboot_practice/tree/main/mysql_demo/src/main
[인프런] 스프링부트 개념과 활용
'JAVA > Spring' 카테고리의 다른 글
SLF4J 개념 및 동작과정 (0) | 2023.04.23 |
---|---|
[SpringBoot] 데이터베이스 마이그레이션(Database Migration) (0) | 2022.12.22 |
[SpringBoot][WebMVC] CORS(Cross-Origin Resource Sharing) 적용 (0) | 2022.12.15 |
[SpringBoot][WebMVC] Hateoas (0) | 2022.12.13 |
[SpringBoot] Spring Security #2 OAuth2 (0) | 2022.11.20 |