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 |