Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

개발자

♣[WF 프로젝트] SpringBoot JPA MySQL 연동/git hub 연동 / pull request 맛보기 (오류와의 전쟁) 본문

개발자/workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)

♣[WF 프로젝트] SpringBoot JPA MySQL 연동/git hub 연동 / pull request 맛보기 (오류와의 전쟁)

GoGo개발 2023. 2. 11. 16:56
이 프로젝트는 Spring Mybatis Oracle 로 진행했던 프로젝트를 SpringBoot JPA MySQL을 이용한 프로젝트로 리팩토링하기 위한 프로젝트이다.

 

SpringBoot와 MySQL 연동, JPA를 사용하기 위한 준비

 

 

build.gradle 에 추가해 주어야 하는 항목들이다.

 

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

첫번째 설정은 jpa를 사용하기 위해 필요한 라이브러리를 다운받는 dependeny이다.

 

 

implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.32'

두번째 설절을 살펴보자, 위 설정은 mysql  의존성을 주입해주는 코드이다..

 

 

그다음 아래 .yml에 mysql 설정을 추가해주어야 한다.

처음 스프링부트 프로젝트를 생성했을 때는 application.properties에 설정을 했어야 했는데, 인텔리제이 무료버전에서는 지원하지 않는 파일이었다. 그래서 계속 활성화가 되지않아서 application.yml 로 변경하여서 진행하였다.

 

 

위의 설정들을 추가해주면 되는데 여기서 주의해야 할 부분은 url에서 내 데이터베이스 이름을 입력하는 부분과 ddl-auto 설정을 해주는 부분이다. 

 

그밖의 설정 부분들 설명

  1. spring.datasource.url : 데이터베이스 url
  2. spring.datasource.username : 데이터베이스 username default로 root가 설정되어있을 것이다.
  3. spring.datasource.password : 데이터베이스 password
  4. spring.datasource.driver-class-name : 드라이버 정보

 

 

hibenate : ddl-auto 설정의 종류

 

  • create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE)
  • create-drop: create와 같으나 종료시점에 테이블 DROP
  • update: 변경분만 반영(운영DB에서는 사용하면 안됨)
  • validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
  • none: 사용하지 않음(사실상 없는 값이지만 관례상 none이라고 한다.)

 

 

나는 처음 create로 설정했었는데, Entity를 변경하고 서버를 재시작하면 제약조건들이 맞물려있어서 table이 drop되지 않는 문제가 발생했다. 그럼으로 인해서 테이블 drop이 되지않아 제대로 변경사항이 적용되지않아 오류가 발생했다.

 

그래서 mysql에서 기존테이블을 모두 drop하고 옵션을 update로 바꾸어 주었더니 제대로 잘 작동 되었다.

 

 

pull request 란? 

 

깃허브 레포지토리에 있는 브랜치에 푸시한 내역들, 변경된 사항들을 다른 사람들에게 알리는 것
마스터 브랜치에 merge되기 전, 변경 사항에 대해 다른 사람들과 논의, 검토할 수 있음


내가 작업한 코드가 있으니 내 브랜치를 당겨 검토 후 병합해주세요 

 

나는 git-flow 방식으로 브랜치를 관리하기 때문에 feature 브랜치에서 작업하여 PR을 보내고 develop 브랜치에 merge되는 흐름이다.