본문 바로가기

SpringBoot/Blog프로젝트 with JPA &데어프로그래밍님

21.1.1 TIL(2) - application.yaml 추가 설명, 데이터베이스 한글 인코딩

한 포스트에 다 작성하려고 했는데 왜인지 모르겠지만 글이 안써져서ㅠ 두개로 나눴다

글자수가 많았나?ㅠㅠ

 

[application.yaml jpa부분 설명]

  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: create
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false
    show-sql: true
    properties:
      hibernate.format_sql: true

 

ddl-auto: create

create대신 들어갈 수 있는 옵션으로는 update, none이 있다. create로 할 경우 프로젝트를 실행 할 때 마다 테이블을 새로 만든다는 의미이다. table을 생성할 때 drop table if exists ~ 를 실행하고 테이블을 생성한다. 이 경우 프로젝트를 실행할 때 마다 이전에 만들어둔 데이터가 다 날아가기 때문에 나중에는 이 부분을 update로 바꿔서 사용할 것이다. update로 해두면 수정사항만 DB에 반영한다. none으로 해둘 경우 DB에 아무런 반영을 하지 않는다.

 

physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

다른 옵션으로는 org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy이 들어갈 수 있다.

코드에 적혀있는 대로 하면 entity를 만들 때 변수명 그대로 데이터베이스 필드를 만든다. 다른 옵션을 적을 경우 변수명이 myEmail과 같이 코드에 적어두면 데이터베이스에 저장할 때는 my_email로 변수명을 변경해서 저장한다.

 

use-new-id-generator-mappings: false

jpa가 사용하는 기본 넘버링 전략을 사용하지 않는다는 뜻이다. true로 설정하면 jpa가 사용하는 기본 넘버링 전략을 사용하게 된다. 

 

show-sql: true

위 문장을 적음으로써 console창에서 sql문이 실행되는 것을 볼 수 있다. 

properties: 

  hivernate.format_sql: true

이를 해두지 않으면 콘솔창에 sql문이 한줄로 보인다. 위의 코드를 작성해놔야 sql문이 정렬된다.

 

 

[데이터베이스 한글 인코딩]

데이터베이스에서 한글 인코딩을 위해 character set을 utf8로 변경해야한다.

이를 위해서는 workbench에서 root로 접속해서

drop database blog;
create database blog character set utf8 default collate utf8_general_ci;

를 실행 해준다.

이후 모든 창을 닫고 다시 프로젝트를 저장해서 데이터베이스를 열어보면 table정보에서 column부분의 character set 이 utf8로 변경된 것을 확인할 수 있다.

 

+worbench에서 테이블 생성 모습 확인하려면

Schemas - blog - Tables에 테이블이 생성된 모습 볼 수 있고 해당 테이블 이름 옆에 i모양 선택하면 테이블 정보를 볼 수 있다.

쿼리문으로 확인하려면

use blog;
select * from user;

하면 테이블이 생성된 모습을 확인할 수 있다.(user 테이블 예시)

댓글