이 글은 Spring Boot를 공부하며 정리한 글입니다.
어플리케이션에서 데이터베이스가 없다면, 사용자에게 전달되는 정보는 대부분 일시적인 정보겠죠. 하지만, 데이터베이스를 이용하여 모든 사용자에게 동일한 정보를 전달할 수 있습니다. 그렇기에 MySQL과 Spring boot를 연동하는 법에 대해서 알아보겠습니다.
사용할 데이터베이스와 사용자는 미리 MySQL을 통해 생성하였습니다.. 하단 링크에서 사용자와 데이터베이스 생성법에 대해서 다루고 있습니다.
spring web, jpa, mysql driver를 추가해준 상태에서 프로젝트를 추가합니다.
Spring 프로젝트에서 MySQL을 사용하기 위해서 아래와 같은 의존성이 추가되어 있어야 합니다.
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa") # JPA
implementation("org.springframework.boot:spring-boot-starter-web") # WEB
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
runtimeOnly("com.mysql:mysql-connector-j") # MySQL
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
application.property처럼 프로젝트에 설정할 수 있는 파일은 yml 확장을 이용하는 것입니다. yml이 확실히 더 편한것 같아서 바꿨습니다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: "jdbc:mysql://[DB서버IP]:[DB포트]/[DB 스키마]?autoReconnect=true&useUnicode=true&serverTimezone=Asia/Seoul"
username: [DB사용자]
password: [패스워드]
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL8Dialect
properties:
hibernate:
storage_engine: innodb
format_sql: true
use_sql_comments: true
hibernate:
ddl-auto: create # 설정해야 테이블 자동생성
open-in-view: false
show_sql: true
자, 이제 Entity를 정의하겠습니다. Entity를 정의하고 난 후 프로젝트를 실행하게 되면 MySQL DB에 해당 테이블이 생성됩니다.
import jakarta.persistence.Entity
import jakarta.persistence.Id
@Entity
class Human (
@Id
var id : Int,
var name : String,
)
예시에서 사용하는 것은 Human입니다. 해당 테이블에는 id, name 필드가 생성될 것입니다.
프로젝트를 실행한 후 터미널을 통해서 테이블이 생성되었는지 확인해보겠습니다. 프로젝트에 설정한 사용자로 접속한 후 해당 스키마의 테이블을 보도록 하겠습니다.
성공적으로 테이블이 생성되었습니다.