mysql 설치 및 jdbc 드라이버를 설정하고, 스프링부트와 mysql을 연동시켜보자.
그리고 CRUD API를 해보자.
implementation 'mysql:mysql-connector-java:8.0.32'
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=
6. application.properties 나 yml 파일 통해서 mysql 하고 연동
(DB연동할때 jdbc드라이버, url:포트, 유저네임 패스워드는 필수로 있어야 연동할 수 있다.)
spring.jpa.hibernate.ddl-auto=create
- create로 한 이유는 테이블을 자동으로 만들기 위함이였는데 테이블이 만들어지고 나면, update나 none으로 바꿔야 테이블이 안사라진다.
- 안 바꾸면 서버 시작할때마다 테이블 날리고 새로만든다.
spring.jpa.show-sql=true
- 스프링부트에서 jpa를 사용할때 하는 설정이다. true로 하면 JPA가 DB와 상호작용할때 실행되는 SQL쿼리를 콘솔에 출력할것인지를 지정함.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- jdbc 드라이버 설정이다. 드라이버는 DB연동해주는 도구라고 생각하고 url과 유저네임,패스워드는 DB에 접근하기 위한 정보라고 생각하면된다.
spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
- 스프링부트에서 Hibernate를 사용하여 MYSQL DB와 상호작용할때 사용할 방언을 지정하는것이다.
- 방언 : 데이터베이스의 종류와 버전에 따라 다른 SQL 문법과 데이터베이스 특정 기능을 처리하기 위한 설정
- 스프링 부트와 MySQL 데이터베이스를 로컬에서 연결할 때 Hibernate를 사용하는 것이 일반적이다. 스프링 부트는 JPA를 기반으로 한 ORM 프레임워크인 Hibernate를 내부적으로 기본적으로 지원하며, 이를 활용하여 데이터베이스와의 상호작용을 관리할 수 있습니다.
- MySQL5InnoDBDialect는 MySQL 5 버전의 InnoDB 스토리지 엔진을 사용하는 데이터베이스와 관련된 방언을 말한다. 이 방언은 MySQL 데이터베이스와의 상호작용을 위해 필요한 SQL 문법 및 기능을 Hibernate가 제대로 처리할 수 있도록 해줍니다.
즉, MYSQL 버전에 맞춰서 Hibernate가 쿼리를 만들때 어떤 mysql 버전에 맞춰서 만들지 지정해주는것이다.spring.jpa.database=mysql
- 애플리케이션이 MySQL 데이터베이스와 함께 동작하고 그에 맞게 Hibernate와 JPA를 설정하겠다는 의미이다.
7. build.gradle에 의존성 수정
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'mysql:mysql-connector-java:8.0.21'
}
하지만 이렇게 했더니 어플리케이션 실행이 되지않는다.
mysql connect에 필요한 의존성인 implementation 'mysql:mysql-connector-java:8.0.21'
을 runtimeOnly 'com.mysql:mysql-connector-j'
로 바꾸면 해결된다.
8. 엔티티에 @Table(name="users")를 넣어주고 애플리케이션을 실행하면 워크벤치 내 테이블명이 "users"로 생성된다.
이렇게 하면 스프링부트와 DB가 연결된것이다.
9. postman에서 CRUD api를 호출하기위해 messagebody에 json으로 데이터 보내면 저 테이블에 데이터가 생긴다.
참고 :
https://bnzn2426.tistory.com/127
https://gyuwon95.tistory.com/167