JPA 프로그래밍 2. 엔티티 타입 맵핑 - KwangtaekJung/inflearn-spring-data-jpa-keesun GitHub Wiki

JPA 프로그래밍: 엔티티 맵핑

  • 주의점: 모든 Annotation은 javax.persistence에 있는 것을 사용해야함.
  • Getter/Setter는 없어도 컬럼으로 매핑됨.

@Entity

  • “엔티티”는 객체 세상에서 부르는 이름.
  • 보통 클래스와 같은 이름을 사용하기 때문에 값을 변경하지 않음.
  • 엔티티의 이름은 JQL에서 쓰임.

@Table

  • “릴레이션" 세상에서 부르는 이름.
  • @Entity의 이름이 기본값.
  • 테이블의 이름은 SQL에서 쓰임.

@Id

  • 엔티티의 주키를 맵핑할 때 사용.
  • 자바의 모든 primitive 타입과 그 랩퍼 타입을 사용할 수 있음
    • Date랑 BigDecimal, BigInteger도 사용 가능.
    • long vs Long : Long을 선호
  • 복합키를 만드는 맵핑하는 방법도 있지만 그건 논외로..

@GeneratedValue

  • 주키의 생성 방법을 맵핑하는 애노테이션
  • 생성 전략과 생성기를 설정할 수 있다.
  • 기본 전략은 AUTO: 사용하는 DB에 따라 적절한 전략 선택
  • TABLE, SEQUENCE, IDENTITY 중 하나.

@Column

  • 모든 필드에 @Column이 붙어 있다고 보면 된다.
  • unique
  • nullable
  • length
  • columnDefinition
  • ...

@Temporal

  • 현재 JPA 2.1까지는 Date와 Calendar만 지원.

@Transient

  • 컬럼으로 맵핑하고 싶지 않은 멤버 변수에 사용.

application.properties

  • spring.jpa.show-sql=true
  • spring.jpa.properties.hibernate.format_sql=true