카테고리 없음
Persistence Context
designercoding
2022. 4. 28. 07:55
mysql 우측클릭
create database book_manager;
콘솔창에 위를 입력하여 book_manager 디비를 만든다.
show databases;
확인한다
application.yml에 디비를 연결해 준다.
datasource:
url: jdbc:mysql://localhost:3306/book_manager
username: root
password: apmsetup
그리고
generate-ddl: true
입력해 준다.(자동으로 entity 활용하고 있는 테이블을 생성한다.)
hibernate:
ddl-auto: create-drop
application.yml
spring:
h2:
console:
enabled: true
jpa:
defer-datasource-initialization: true
show-sql: true
properties:
hibernate:
format_sql: true
generate-ddl: true
hibernate:
ddl-auto: create-drop
datasource:
url: jdbc:mysql://localhost:3306/book_manager
username: root
password: apmsetup
server:
port: 8070
테스트를 해본다.
generate-ddl
yml 계층에서도 볼 수 있듯이 jpa의 하위 속성이고 jpa는 인터페이스에 대한 정의이고 실제 구현체는 별도로 존재 즉 generate-ddl은 구현체와 상관없이 자동화된 ddl를 사용할 수 있도록 설정
ddl-auto가 generate-ddl 보다 세밀하여 ddl-auto가 우선권을 갖는다.
즉 generate-ddl 이 false고 ddl-auto가 create 면 generate-ddl을 무식하고 ddl-auto의 create를 따라간다
참고로 H2 db 같은 임페디드 db는 ddl-auto가 create-drop으로 작동한다.
initialization-mode: always
datasource:
url: jdbc:mysql://localhost:3306/book_manager
username: root
password: apmsetup
initialization-mode: always
스프링에서 지정하는 initailization 모드가 동작한다.
즉 schma.sql 또는 data.sql 로딩해서 해당커리를 실행한다.
임베디드 디비에서는 자동으로 로딩
sql:
init:
mode: always
으로 변경해야 한다
배보할때는 보통 초기화 하면 안되니깐 never로 지정
initialization-mode: never
intialization-mode가 always이고, schma.xml이 있다면 schma.xml 이 가장 높은 우선 순위를 가진다.
즉 위의 상황이라면 ddl-auto는 무시된다.
반응형