[24.01.29]
<<진도>>
[Back-end] JPA
yml DDL DML 관련 DB 설정
ver3- security 실습
yml 파일로 시큐리티세팅이 자동완성이 가능함
.properties를 .yml 로 변경 후 작성
##db연결
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ver3
username: root
password: 1111
## 서버설정
server:
port: 8085
(** Application에 exclude로 넣으면 실행시 시큐리티를 꺼놓을 수 있다.)
Entity를 가지고 자동으로 DB 테이블 생성 (DDL과 관련)
jpa.hibernate.ddl-auto
1. ddl-auto: create
서버가 실행이될 때 기존 테이블을 삭제 후 다시 생성
2. ddl-auto: create-drop
서버가 종료될 때 아예 테이블을 삭제 -> 서버실행될 떄 테이블 생성
3. none
생성 삭제 일절 안함
4. update
삭제 생성이 아닌 / 변경이 이루어진 것만 업데이트 함
Entity 수정 후
alter쿼리 실행됨
create와 관련된 DDL : schema.sql / yml파일 설정에서 특정 db지정
실제 쿼리문으로 schema.sql에서 테이블생성 resource에 생성하면 서버 재실행 될때 DDL 과 관련된 명령 스크립트 실행
yml의 sql.init.mode
## always : 모든 DBMS 스크립트 파일 실행 (내/외장)
## embedded : 내장 DBMS만 실행
## never : 모든 DBMS 실행하지 않음
* DML 과 관련된 것은 data.sql에 작성 후 실행
- select : 데이터 조회
- insert : 데이터 삽입
- update : 데이터 수정
- delete : 데이터 삭제
앞으로 dummy 데이터는 이것을 통해 넣어두면 된다!!
schema -> data 순으로 실행 됨
sql script들의 위치는 resources에 database폴더
resources 기본경로를 벗어난 sql 파일을 별도의 경로 지정이 필요
자동완성됨
서버가 재실행 될 때마다 schema.sql, data.sql 이 실행 (sql 스크립트파일은 실행파일!)
schema.sql에
insert 같은 DML을 넣어주어도 실행은 되지만!
원칙적으로 DML은 data.sql에 넣는다!
컬럼데이터를 전부 넣을때 자동 증가 기본키는 null로 넣어주면 잘 된다.
** schema.sql 스크립트파일 실행의 user가 있고
/ hibernate 의 ddl-auto: create(삭제 후 생성)로 엔티티 user가 만들어지는 경우
우선적으로 sql 스크립트가 실행된다!
따라서 hibernate가 생성한 테이블이 최종으로 있는데
자동생성은 컬럼 순서가 보장되지 않음
** 또한 스크립트 sql 파일이 먼저 실행되기때문에 hibernate로 테이블생성 + data.sql로 데이터 입력도 불가능!!
(data.sql 이 먼저 실행되기 때문에)
따라서
!! hibernate가 먼저 실행되게 하는 세팅
hibernate => schema.sql, data.sql
데이터가 들어온다.
but, 테이블의 컬럼명 순서는 알파벳 순으로 자동 정렬되고
카멜표기법으로 Entity field를 채워놔도 mysql이 대소문자를 구분하지않아 컬럼명은 스네이크 표기법 생성
ex) userEmail -> user_email
(+ Entity 클래스명과 별개로 테이블명 지정가능)
hibernate 쿼리문 설정
포맷 및 색 변경
binding 설정