본문 바로가기

Spring/Spring JPA

[JPA] 엔티티 클래스에서 많이 사용되는 어노테이션

1. @Entity

  •  이 어노테이션은 클래스가 JPA 엔티티임을 나타냅니다.
  • 필수 사용: 엔티티로 작동하기 위해서는 반드시 필요하며, 이를 통해 JPA가 해당 클래스를 데이터베이스의 테이블과 매핑할 수 있습니다.

2. @Table

  • 데이터베이스의 특정 테이블과 매핑하기 위해 사용됩니다.
  • 옵션 속성: name (테이블 이름), schema (스키마 이름), uniqueConstraints (고유 제약 조건) 등이 있습니다.
  • 예시:
     
@Table(name = "members")

3. @Id

  • 해당 필드를 엔티티의 **기본 키(primary key)**로 지정합니다.
  • 필수 사용: 엔티티 클래스에는 반드시 하나의 @Id가 필요합니다.

4. @GeneratedValue

  • 기본 키 값의 생성을 자동으로 처리하는 전략을 지정합니다.
  • 옵션 속성: strategy (자동 생성 전략), 예를 들어 GenerationType.IDENTITY, GenerationType.SEQUENCE 등이 있습니다.
  • 예시:
     
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

 

5. @Column

  • 엔티티 필드와 데이터베이스 테이블의 컬럼을 매핑합니다.
  • 옵션 속성: name (컬럼 이름), nullable (NULL 가능 여부), unique (고유 제약 조건) 등을 설정할 수 있습니다.
@Column(name = "username", nullable = false)
private String name;

 

6. @OneToOne, @OneToMany, @ManyToOne, @ManyToMany

  • 엔티티 간의 관계 매핑을 정의합니다.
    • @OneToOne: 일대일 관계
    • @OneToMany: 일대다 관계
    • @ManyToOne: 다대일 관계
    • @ManyToMany: 다대다 관계
  • 옵션 속성: mappedBy, cascade, fetch 등을 설정할 수 있습니다.

7. @JoinColumn

  • 외래 키 매핑에 사용됩니다. 관계가 설정된 엔티티의 외래 키가 어떤 컬럼인지 지정할 수 있습니다.
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;

 

8. @Embedded 및 @Embeddable

  • 복합 값 타입을 매핑할 때 사용됩니다.
    • @Embedded: 다른 @Embeddable 객체를 필드로 포함할 때 사용
    • @Embeddable: 별도의 클래스를 정의하여 엔티티에 임베디드될 수 있도록 선언

9. @Lob

  • 큰 텍스트나 바이너리 데이터를 처리하기 위해 사용됩니다.

10. @Transient

  • 특정 필드를 영속성 관리에서 제외할 때 사용됩니다. 데이터베이스에 매핑되지 않고, JPA가 관리하지 않습니다.

11. @Enumerated

  • enum 타입의 필드를 매핑하기 위해 사용됩니다. EnumType.STRING 또는 EnumType.ORDINAL을 지정할 수 있습니다.

12. @Temporal

  • Java.util.Date나 java.util.Calendar 타입을 매핑할 때 사용됩니다. (예: 날짜, 시간, 타임스탬프)

이러한 어노테이션을 조합하여 엔티티와 데이터베이스의 구조와 동작을 세부적으로 조정할 수 있습니다. JPA를 활용한 다양한 엔티티 매핑 작업에서 자주 사용되므로, 각 어노테이션의 역할과 사용 방법을 숙지하고 있어야 합니다.

'Spring > Spring JPA' 카테고리의 다른 글

[JPA] ApplicationContextAware 간단하게  (0) 2024.11.16
[JPA] ENUM 타입  (0) 2024.11.12
[JPA] Paging  (0) 2024.11.12
[JPA] IsEmpty와 IsNotNulLL 의 차이점  (0) 2024.11.11
Query by Example(QBE)  (0) 2024.11.11