JPA는 엔티티 객체를 생성할 때, 기본 생성자(Default Constructor)를 사용한다.
@Entity(속성 = “엔티티 이름”)
@Table(속성 = “매핑할 테이블 이름”)
@Id
@Column(name = "id")
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Id
@GeneratedValue
private Long id;
@Entity
@Table(name = "orders")
public class Order {
@Id
@Column(name = "id")
private String uuid;
@Column(name = "order_datetime", columnDefinition = "TIMESTAMP")
private LocalDateTime orderDatetime;
@Enumerated(EnumType.STRING)
private OrderStatus orderStatus;
@Lob
private String memo;
}
설계한 엔티티로 DB 스키마를 설계하면 설계한, ERD 형태로 테이블이 생성되기는 하지만, 실제 엔티티 객체사이에는 서로 참조하지 않고 있다.
방향 (단방향, 양방향)
다중성 (다대일, 일대다, 다대다)
연관관계 주인 (mappedBy)
스프링에서 JPA를 편리하게 사용할 수 있도록 지원하는 의존성 입니다.
JPA repository 인터페이스를 이용하면 레퍼런스의 키워드를 참고한 이름을 기준으로 손쉽게 쿼리를 만들 수 있습니다.
@Query
를 통하여 원하는 쿼리를 직접 짜서 사용할 수 있습니다.
빌더 패턴을 이용하여 객체의 chaining 방식으로 쿼리를 짤 수 있습니다.