본문 바로가기
JPA

JPA 기본문법 파악

by 혀눅짱 2023. 9. 11.

JPA강의를 들은지는 오래되엇고 이를 통해 간단한 api프로젝트 예제도 진행하였는데 시간이 지나면서 기억이안나고 까먹는 부분이 많았다.

예전 강의에서 했던 예제프로젝트를 바탕으로 기본 문법부터 다시 정리해보면서 복습하는 시간을 가져야겠다.

 

먼저 도메인설계를 위한 기본 문법 부터 파악한다.

 

@Entity
@Getter @Setter
public class Delivery extends BaseEntity{
    @Id @GeneratedValue
    @Column(name = "delivery_id")
    private Long id;

    @JsonIgnore
    @OneToOne(mappedBy = "delivery",fetch = LAZY)
    private Order order;

    @Embedded
    private Address address;

    @Enumerated(EnumType.STRING)
    private DeliveryStatus status;
}

@Entity

@Entity 어노테이션은 데이타베이스의 테이블과 일대일로 매칭되는 객체 단위이며 Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미

@Column

@Column 어노테이션은 데이타베이스의 테이블에 있는 컬럼과 동일하게 1:1로 매칭되기 때문에 Entity 클래스안에 내부변수로 정의

이때 의도적으로 필요없는 컬럼들은 작성하지 않아도됨

 

@Id

데이타베이스의 테이블은 기본적으로 유일한 값을 가짐. 그것을 PK (Primary Key) 라고 하는데 데이타베이스는 이 유일한 키값을 기준으로 질의한 데이타를 추출해 결과셋으로 반환. 테이블 상에 PK 가 없는 테이블도 있지만 대부분의 경우 반드시 PK 가 존재

 

@GeneratedValue

id(primary key)의 값을 자동생성해줌.

종류가 4가지가 있음.

IDENTITY: 기본 키 생성을 데이터베이스에 위임한다. MySQL에서 많이 씀

SEQUENCE: 데이터 베이스 오브젝트를 이용. 데이터베이스 시퀀스를 사용해서 기본 키를 할당(oracle)

TABLE: 별도의 키 생성 테이블을 사용합니다. 모든 DB에서 사용가능

AUTO: 방언에 따라 자동으로 기본 값으로 지정

 

@Enumerated

보통 상수들을 쓰기위해 쓴다. 해당 enum클래스의 정의된 값으로 들어갈수있는 값을 제한한다.

public enum DeliveryStatus {
    READY, COMP
}

'JPA' 카테고리의 다른 글

즉시로딩 과 지연로딩 그리고 N+1  (0) 2023.09.20
Entity 상속  (0) 2023.09.13
JPQL  (0) 2023.09.13
영속성 컨텍스트  (0) 2023.09.13
연관관계 설정  (0) 2023.09.11