개발공부/[Spring]김영한_ORM표준 JPA프로그래밍

[매핑 어노테이션]@Entity, @Table, @Enumerated, @Id, @GeneratedValue, @Temporal,@Lob

개발자 덕구🐾 2022. 8. 18. 00:58
728x90

 

 

 

1.  @Entity

 

@Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. 

꼭 기본 생성자가 있어야한다. ( 파라미터X)

 

 

 

 

 

2. @Table 

 

엔티티와 매핑할 테이블을 지정하는 어노테이션이다. 

속성으로 name = "" 으로 매핑할 테이블 이름을 변경할 수 있다. 

 

 

 

3. @Enumerated 

enum을 설정하고 싶을 때 사용한다. 

(EnumType.STRING)으로  설정해주어야 안전하다.

ORDINAL도 있는데 (default)이는 순서를 DB에 저장하는 것으로 안전하지않다. 

 

예시 ) 

    @Enumerated(EnumType.STRING)
    private OrderStatus status;

 

 

 

4. @Id

해당 변수를 pk로 설정해준다. 

 

 

5. @GeneratedValue

 

따로 값을 넣지 않아도 자동적으로 숫자가  하나씩 증가되도록 값이 설정된다.

<PK 자동생성>

 

 

기본키는 null이 아니여야하고 유일해야하고 변하면 안된다. 

미래까지 이 조건을 만족하는 자연키는 찾기 어렵다. 그 대신 대체키를 사용하자. 

권장 : Long 형 + 대체키 + 키 생성전략 사용 

 

 

6. @Temporal 

날짜, 시간등으로 형식을 지정할 때 사용한다. 

(TemporalType.TIMESTAMP)을 주어 타입을 지정할 수 있다. 

TIMESTAMP이외에도 DATE , TIME이 있다. 

[ LocalDate , LocalDateTime을 사용하면 생략가능] 

 

 

 

7. @Lob  

긴 문자열 혹은 숫자를 저장할 때 사용하는 어노테이션이다. 

description등 긴 설명을 적을 때 사용 

 

 

 

반응형