MYSQL을 로컬에 띄우고 유저 정보에 대한 CRUD API 만들기

재우·2023년 8월 10일
0

mysql 설치 및 jdbc 드라이버를 설정하고, 스프링부트와 mysql을 연동시켜보자.
그리고 CRUD API를 해보자.


  1. mysql설치(Username: root / Password: )
    => 로컬에 MYSQL이 설치됨 - MySQL workbench 활용(MYSQL을 로컬에서 띄우기)

  1. 인텔리제이 build.gradle에 의존성 추가
    implementation 'mysql:mysql-connector-java:8.0.32'

  1. 인텔리제이 application.properties 파일에 내용 추가
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=

  1. 인텔리제이 entity, repository, controller 생성



  1. MySQL workbench내에서 스키마(mydb) 생성
    (참고 : https://m.blog.naver.com/calb30095/222054766859 )
  • application.properties 파일에서, 생성한 스키마랑 이름 일치시켜줘야함.(mydb)



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

0개의 댓글