JPA 스터디 2주차

반응형
반응형
<property name="hibernate.hbm2ddl.auto" value="create" />

create : 기존 테이블을 삭제하고 새로 생성한다.  DROP + CRERE
create-drop : create 속성에 추가로 애플리케이션을 종료할 때 생선한 DDL을 제거한다.
 - DROP + CRERE + DROP

update : 데이터베이스 테이블과 엔티티 매핑 정보를 비교해서 변경 사항만 수정한다.
validate : 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 애플리케이션을
실행하지 않는다. 이 설정은 DDL을 수정하지 않는다.

none :  아무것도 하지 않는다.

WARN: Unrecognized hbm2ddl_auto value : cressssssate.  Supported values include 'create', 'create-drop', 'update', 'none' and 'validate'.  Ignoring
1월 18, 2022 11:36:14 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop

 

테스트 서버, 개발 서버, CI 서버 스테이징, 운영 서버

네이밍 전략

<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>

기본 키 매핑

Identity: 기본키를 애플리케이션에서 직접 할당한다. : Mysql, PostgreSql, Sql Server, DB2
=> 쓰기 지원이 동작하지 않는다.
sequence: 데이터베이스 시퀀스를 사용해서 기본 키를 할당한다. 오라클, PostgreSQL, DB2, H2
table: 키 생성 테이블을 사용한다. 

데이터베이스 마다 기본키 생성하는 방식들이 조금식은 다르다.
어떤 방법을 사용하는 것이 가장 좋을까?

Identity 전략은 데이터를 데이터베이스에 INSERT한 후에 기본 키 값을 조회할 수 있다. 따라서 엔티티에 식별자 값을 할당하려면 JPA는 추가로 데이터베이스를 조회해야 한다. JDBC3에 추가된 Statement.getGenerateKeys()를 사용하면 데이터를 저장하면서 동시에 생성된 기본 키 값도 얻어 올 수 있다. 하이버네이트는 이 메소드를 이용해서 데이터베이스와 한번만 통신한다.

이 전략은 데이터베이스에 저장해야 식별자를 구할 수 있다.

@SequenceGenerator

name : 식별자 생성 이름
sequenceName: 데이터베이스에 등록되어 있는 시퀀스 이름
initialValue: DDL 생성시에만 사용됨, 시퀀스 DDL을 처음 시작하는 수를 지정한다.
allocationSize: 시퀀스 한 번에 호출에 증가하는 수 (성능 최적화에 사용)
catalog, schema 데이터베이스 catalog, schema 이름

시퀀스에 접근하는 횟수를 줄이기 위해

식별자는 어떻게 선택해야 할까?
1. null 값을 허용하지 않는다.
2. 유일해야 한다.
3. 변해선 안된다.

자연키 , 대리키

대리키로 하자.

필드와 컬럼 매핑 분류
- 필드와 컬럼 매핑 @Column @Enumerated @Temporal @Lob @Transient
- 기타 @Access JPA가 엔티티에 접근하는 방식을 지정한다.

@Column 속성
- name 
- insertable
- updateable
- table : 하나의 엔티티에 두 개 이상의 테이블을 연결 할때
- nullable  
- unique
- columnDefinition
- length
- precision: 소수점을 포함한 전체 자릿수
- sacle: 소수 자리 수

@Enumerated : 자바 enum 매핑
 - String
@Temporal 날짜 타입
Date, Time, TIMESTAMP

 

 

반응형

'JPA' 카테고리의 다른 글

JPA 스터디 4주차  (0) 2022.02.02
JPA 스터디 3주차  (0) 2022.01.26
JPA 스터디 2주차  (0) 2022.01.20
JPQL 중급 문법  (0) 2021.12.26
JPQL 기본 문법  (0) 2021.12.18
값 타입 작성 방법  (0) 2021.12.12

댓글(0)

Designed by JB FACTORY