jpa 공부 - 1일차

1113 단어 JPAJPA

어노테이션들

  • 객체와 테이블 매핑: @Entity, @Table
  • 기본 키 매핑: @Id
  • 필드와 컬럼 매핑: @Column
  • 연관관계 매핑: @ManyToOne, @JoinColumn

데이터베이스 스키마 자동 생성

클래스의 매핑 정보를 보면 어떤 테이블에 어떤 컬럼을 사용하는 지 알 수 있어서 JPA는 이 매핑 정보를 통해 데이터베이스 방언을 사용해서 데이터베이스 스키마를 생성한다.(설정에서 AUTO기능 추가해줘야된다?)

DDL 보면 기존 테이블을 삭제하고 다시 생성한 것을 확인할 수 있음

기본 키 매핑

직접 할당

기본 키를 애플리케이션에서 직접 할당한다.
예를 들어 em.persist() 로 엔티티를 저장하기 전에 애플리케이션에서 기본 키를 직접 할당하는 방법이다.

자동 생성

IDENTITY

기본 키 생성을 데이터베이스에 위임하는 전략

@ID
@GeneratedValue(startegy = GenerationType.IDENTITY)
private Long id;

주의
엔티티가 영속 상태가 되려면 식별자가 반드시 필요하다.
그런데 IDENTITY 식별자 생성 전략은 엔티티를 데이터베이스에 저장해야 식별자를 구할 수 있으므로 em.persist()를 호출하는 즉시 INSERT SQL이 데이터베이스에 전달됨. 따라서 이 전략은 트랜잭션을 지원하는 쓰기 지연이 동작하지않음!

SEQUENCE

IDENTITY 전략과 같지만 내부 동작 방식은 다름
시퀀스 생성기가 ID를 생성해주기 때문!

TABLE

키 생성 전용 테이블을 하나 만들고 여기에 이름과 값으로 사용할 컬럼을 만들어 데이터베이스 시퀀스를 흉내내는 전략임


자연 키보다는 대리키를 권장한다

좋은 웹페이지 즐겨찾기