3차 - Spring Boot JPA 설정하기

라꾸·2022년 11월 3일
0

JPA (JAVA Persistence API) 는 자바의 ORM (Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음으로, 기존에 MyBatis나 IBatis로 사용사던 SQL 조작을 Method로 조작할 수 있게 해준다.

JPA를 사용하면 일일히 쿼리를 작성하지 않아도 Method 호출만으로 쿼리를 수행할 수 있게 되는 것이다.

▶ build.gradle 설정

build.gradle 파일을 열고 depndencies 에 아래 내용을 추가해줍니다.
이 dependencies는 JPA에 대한 의존성을 추가해주는 것입니다.

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

저장을 하고, build.gradle 파일을 우클릭 후 Gradle -> Refresh Gradle Project를 선택합니다.

▶ Application.yml 설정

프로젝트 하위의 src/main/resources로 들어가면 application.yml 파일이 있는데요.
해당 파일에 아래 내용을 추가해줍니다.

 jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: none
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    generate-ddl: false
    open-in-view: false
    show-sql: true

추가해주실 때 주의사항은 spring: 하위에 추가해주셔야 한다는 것입니다.

▶ 확인하기

모든 설정을 마친 후에 프로젝트를 실행했을 때, 아래와 같은 로그가 나오면 잘 설정된 것으로 보시면 됩니다.

▶ Public key retrieval is not allowed 에러 해결방법

해당 설정을 진행하다 보니, Public key retrieval is not allowed 에러가 뜨는데요.
해당 에러가 뜨지 않는다면 넘어가셔도 되지만, 만약 해당 에러가 뜨시는 분들은 아래를 참고해주시면 됩니다.

Application.yml 파일에 아래와 같은 코드가 있을텐데요.

url: jdbc:mysql://localhost:3306/{db명}?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul

해당 코드를 아래와 같이 바꿔주시면 됩니다.

url: jdbc:mysql://localhost:3306/{db명}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&serverTimezone=Asia/Seoul

allowPublicKeyRetrieval=true 라는 값을 추가해 준 것인데 Mysql 8.0 버전 부터는 보안적인 이슈로 useSSL에 추가적인 설정이 필요해졌다고 하네요.

REPERENCE

https://deeplify.dev/database/troubleshoot/public-key-retrieval-is-not-allowed

0개의 댓글