JPA는 기본적으로 객체와 테이블 간의 매핑으로 모든 작업을 시작한다.
이번 편에서는 가볍게 이런 매핑을 도와주는 몇가지를 정리해보고자 한다.
(인프런 김영한님의 JPA강좌 강의자료를 보고 다시 한번 개인적으로 정리하는 용도입니다.)
※ 주의사항 ) 기본 생성자는 필수(Public 또는 Protected 생성자)
@Entity의 속성
1. name
- JPA에서 사용할 엔티티 이름
- 따로 작성 안하면 기본값은 클래스 이름 그대로 사용
- 동일한 이름의 클래스가 없다면 가급적 기본값으로 사용 추천
@Table의 속성
1. name : 매핑할 테이블 이름
2. catalog : 데이터베이스 catalog 매핑
3. schema : 데이터베이스 schema 매핑
4. uniqueConstraints : DDL 생성 시에 유니크 제약 조건 생성
hibernate.hbm2ddl.auto
1. create : 실행 시점에 기존테이블 삭제 후 다시 생성 (DROP -> CREATE)
2. create-drop : create와 비슷하나 종료시점에 테이블 DROP
3. update : 변경된 사항만 반영(운영DB에는 사용 X)
4. validate : 엔티티와 테이블이 정상 매핑되었는지만 확인
5. none : 아무것도 사용X
※ 주의사항
- 운영장비에는 절대 create, create-drop, update 사용 X
- 테스트 서버는 update 또는 validate
- 스테이징과 운영서버는 validate 또는 none
각각의 매핑 어노테이션에는 또 다양한 속성들이 존재, 속성은 필요할 때 찾아보는 식으로!
기본 키 매핑 방법
1. 직접 할당 : @Id만 사용
2. 자동생성 : @GeneratedValue 함께 사용
- IDENTITY : 데이터베이스에 위임(DBMS마다 고유적으로 Sequence 할당에 사용하는 방법 있음), 예를 들면 MySql의 AUTO_INCREMENT
- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용(ORACLE에서 사용하는 방법), @SequenceGenerator 필요
- TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용(나는 이렇게 사용하는건 본적 없다)
- AUTO : 방언에 따라 자동 지정, 기본값
이전에도 말했다시피, JPA와 DB는 연관관계를 매핑하는 부분부터 패러다임의 차이가 발생하기 때문에 외래키로 테이블간의 관계를 맺는 DB와 달리 객체는 이러한 부분을 어떻게 풀어넀는지가 중요할 것이다. 이 부분은 JPA 사용의 핵심이라고 할 수 있는데, 다음 글부터 한번 제대로 정리해보고싶다. 끝!