"persistence.xml" 은 JPA의 설정 정보 파일로서,
META-INF/persistence.xml 에 위치한다.
<persistence.xml>
<설정 정보 헤더 (version, name)>
persistence version = "2.2" : JPA version
JPA 2.2ver 사용
persistence-unit name = "hello" : 설정 파일 이름 부여
특정 DB에 사용되는 JPA 설정 파일을 식별하기 위한 이름 설정
(JPA 설정 파일은 각각 DB에 맞게 1개 씩 따로 만드는데, 각각 DB에 맞는 JPA 설정 정보파일을 특정하기 위해 이름이 필요하다.)
<설정 정보 본문1 (필수 설정 정보)>
"javax.persistence.jdbc.driver" : 데이터베이스 접근 정보
value 로 사용하고자 하는 데이터베이스 타입을 입력받는다.
"javax.persistence.jdbc.user" : 데이터베이스 사용자 아이디
"javax.persistence.jdbc.password" : 데이터베이스 사용자 패스워드
"javax.persistence.jdbc.url" : db 파일에 대한 접근 경로
"hibernate.dialect" : 데이터베이스 방언(Dialect)
각 DB 마다 제공하는 SQL 문법이 조금씩 다른데, 이를 JPA가 보정해준다.
=> 중간에 사용하는 DB를 바꾸더라도, 이 설정을 바꾸면 문제 없다.
<설정 정보 본문2 (추가 설정 정보 - 옵션)>
(하이버네이트 설정 옵션)
"hibernate.show_sql" : DB로 전송되는 SQL 쿼리를 볼 것 인가?
: 사용자의 요구를 수행하기 위해 JPA 가 JDBC를 통해 DB로 보내는 쿼리를 확인할 것 인지의 여부
"hibernate.format_sql" : SQL 쿼리를 정돈하여 볼 것 인가?
"hibernate.use_sql_comments" : SQL 쿼리를 볼때, 설명 주석도 볼 것인가?
"hibernate.hbm2ddl.auto" : 애플리케이션을 실행 할 때, DB 관리 방법
1. "create" : Session factory가 실행될 때, 존재하는 테이블을 지우고 다시 생성
2. "create-drop" : Session factory가 내려갈 때, 존재하는 테이블을 지우고 다시 생성
3. "update" : 실행시, 스키마의 이전과 변경된 부분을 업데이트 (데이터 삭제 X)
+) 추가 2023.11.23
영속성 컨텍스트 내부의 "쓰기 지연 SQL 저장소" 에 저장되는 쿼리의 사이즈를 설정할 수 있다.
마치 버퍼 처럼 SQL 문을 머금고 있다가, 트랜잭션이 커밋되면, DB로 SQL 문을 보내는데,
머금을 수 있는 SQL 문의 양을 설정하는 것이다.
+)추가 2023.11.25
"hibernate.hbm2ddl.auto" : 애플리케이션을 실행 할 때, DB 관리 방법
1. create : 기존 테이블 삭제 후 다시 생성 (DROP + CREATE)
2. create - drop : create 와 같으나 종료시점에 테이블 DROP (DROP + CREATE + 종료시점 DROP)
3. update : 변경 부분만 반영 (ALTER 쿼리(컬럼 추가)에만 반응, 지워진 컬럼에는 반응하지 않음)
=> 운영 DB에는 절대 사용하면 안됨.
4. validate : 엔티티와 테이블이 정상 매핑 되었는지만 확인
5. none : 해당 옵션 설정을 사용하지 않음 (주석 처리한 것과 같은 효과)
※ 주의점 : 운영장비에는 절대 create, create-drop, update 를 사용 X
'Spring > JPA' 카테고리의 다른 글
[JPA - 6] 연관관계 매핑 (양방향 연관관계 / 연관관계의 주인 - 중점) (0) | 2023.11.26 |
---|---|
[JPA - 5] Entity Mapping (0) | 2023.11.25 |
[JPA - 4] 영속성 컨텍스트 (Persistence Context) - 내부 동작 방식 (0) | 2023.11.24 |
[JPA - 3] JPA 구동 방식 / 간단한 JPA를 이용한 데이터 조작 (1) | 2023.11.20 |
[JPA - 1] JPA 시작하기 - Setting (+ Spring Boot ver 에 적합한 라이브러리 ver 찾는 방법 ) (0) | 2023.11.19 |