엔티티 매핑
- 객체와 테이블 매핑: @Entity, @Table
- 필드와 컬럼 매핑: @Column
- 기본 키 매핑: @Id
- 연관관계 매핑: @ManyToOne, @JoinColumn
@Entity
- @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.
- 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
데이터베이스 스키마 자동 생성
- DDL을 애플리케이션 실행 시점에 자동 생성
- 이렇게 생성된 DDL은 개발 장비에서만 사용
- 생성된 DDL은 운영서버에서는 다듬은 다음에 사용 권장
데이터베이스 스키마 자동 생성 - 주의
- 개발 초기 단계는 create 또는 update
- 테스트 서버는 update 또는 validate
- 스테이징과 운영 서버는 validate 또는 none
- 테스트 서버 부터와 운영서버는 none으로 하는게 좋음
권장하는 식별자 전략
- 기본 키 제약 조건: null아님, 유일, 변하면 안된다.
- 미래까지 이 조건을 만족하는 자연키는 찾기 어렵다. 대리키(대체키)를 사용하자.
- 권장:Long형 + 대체키 + 키 생성전략 사용
주의
generatedValue를 사용하는 엔티티는 다른 영속성 컨텍스트들과는 다드게 em.persist()하면 바로 db에 쿼리가 날라간다. 하지만 SEQUENCE전략을 사용하면 call next value for ENTITY_SEQ라는 쿼리를 db에 날려서 다음 key값을 가져와서 넣어준 다음 나중에 commit 할 때 insert쿼리가 날라간다.