Java/Spring Framework

[Spring Data JPA] JPA 기본 Annotation 정리

mingmongs 2025. 3. 20. 12:21

title

Spring JPA에서 객체를 entity로 사용하기 위해 @Entity 어노테이션을 사용해야한다.
이처럼 JPA를 사용할 때 필요한 Annotation에 대해 몇 가지 알아보자.

 

 

아래의 Member Entity를 예시로 들어보자.

img1

1) @Entity

: entity 어노테이션은 DB 테이블과 1:1로 매칭되는 객체로, entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미한다.
따라서 각 레코드를 구분하기 위한 유일한 키값을 가지는데, 이것이 테이블의 PK(Primary Key)와 같은 의미를 가지며, @Id 어노테이션으로 정의한다.

img2

 

2) @GeneratedValue

: PK 자동 생성 전략을 설정하는 어노테이션으로, 4가지가 있다.
@GeneratedValue(strategy = {기본키값 생성전략})

  • GenerationType.IDENTITY:
    주로 MySQL과 같은 데이터베이스에서 사용되는 방법으로,
    데이터베이스의 자동 증가 기능을 이용하여 주요 키 값을 생성한다.
  • GenerationType.AUTO:
    JPA 구현체가 데이터베이스에 맞는 적절한 전략을 자동으로 선택하여 주요 키 값을 생성한다.
    데이터베이스마다 다른 전략을 사용한다.
  • GenerationType.SEQUENCE:
    일련번호(Sequence)를 사용하여 주요 키 값을 생성한다.
    일부 데이터베이스는 시퀀스를 지원하며,
    이를 활용하여 주요 키 값을 생성한다.
  • GenerationType.TABLE:
    별도의 키 생성 테이블을 사용하여 주요 키 값을 생성한다.
    일부 데이터베이스는 시퀀스를 지원하지 않을 수 있으므로,
    이를 대체하는 방법으로 사용된다.

 

3) @Column

: column 어노테이션은 DB 테이블의 컬럼을 매핑할 때 사용한다.
해당 어노테이션은 생략이 가능하지만, 실제 DB 테이블의 컬럼명이 스네이크 케이스(언더바 형식)로 작성되어 있지 않다면 명시적으로 작성해줘야 매핑이 가능하다.

  • @Column(name= ~): 해당 컬럼의 DB 컬럼명을 명시해준다.
  • @Column(length= ~): 해당 컬럼 값의 length를 명시해준다. (String 타입에만 사용 가능하다.)
  • @Column(nullable = false): nullable을 false로 해주면 filed가 notNull column으로 설정된다.
  • @Column(unique = true): 해당 column을 unique로 설정해준다.

img3

 

 

[reference]
https://www.icatpark.com/entry/JPA-%EA%B8%B0%EB%B3%B8-Annotation-%EC%A0%95%EB%A6%AC
https://velog.io/@seongwon97/Spring-Boot-Entity-Annotation
https://velog.io/@gillog/JPA-Column-Annotation
https://velog.io/@gillog/JPA-Column-Annotation