1.엔티티 클래스 관련 어노테이션
1-1.@Entity
JPA 엔티티임을 명시하는 가장 기본적인 어노테이션입니다.
데이터베이스의 테이블과 Java 객체 간의 매핑을 설정하는 역할을 합니다.
테이블 이름의 기본값은 클래스 이름으로 매핑됩니다.
@Entity
public class User {
}
1-2.@Table
@Entity와 함께 사용하며 엔티티가 매핑될 데이터베이스 테이블 정보를 정의합니다.
@Entitiy로 할경우 테이블 이름이 클래스 이름으로 되지만 @Table을 통해 지정할수있다.
name: 테이블 이름을 지정합니다.
schema: 테이블이 속하는 스키마를 지정합니다.
uniqueConstraints: 테이블에 대한 고유 제약 조건을 정의합니다.
@Entity
@Table(name = "users") // 테이블 이름을 "users"로 지정
public class User {
}
2.기본 키 관련 어노테이션
2-1.@Id
기본 키로 사용할 필드를 지정합니다.
@Entity
public class User {
@Id
private Long id;
}
2-2.@GeneratedValue
기본 키 값을 자동으로 생성하는 방법을 지정합니다.
@Id 와 함께 사용합니다.
GenerationType.AUTO: JPA 구현체가 자동으로 결정
GenerationType.IDENTITY: 데이터베이스가 기본 키를 자동으로 생성
GenerationType.SEQUENCE: 데이터베이스 시퀀스를 사용해 키 값을 생성
GenerationType.TABLE: 별도의 테이블을 사용해 키 값을 관리
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
3.필드 매핑 관련 어노테이션
3-1.@Column
엔티티의 필드를 데이터베이스 컬럼에 매핑합니다.
필요한 속성들을 정의합니다.
name: 컬럼 이름 지정
nullable: null 허용 여부 지정
length: 문자열 컬럼의 길이 지정
@Entity
public class Product {
@Column(name = "product_name", length = 50, nullable = false)
private String name;
}
4.관계 매핑 관련 어노테이션
4-1.@OneToOne
두 엔티티 간의 1:1 관계를 설정합니다.
4-2.@OneToMany, @ManyToOne
N:1 관계를 설정합니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "user")
private List<Order> orders; // 사용자와 주문 간의 1:N 관계
}
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user; // 주문과 사용자 간의 N:1 관계
}
4-4.@ManyToMany
N:N관계를 지정합니다.
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToMany(mappedBy = "courses") // Student 엔티티와의 관계를 매핑
private List<Student> students; // 수강하는 학생 목록
}
'BackEnd > SpringBoot' 카테고리의 다른 글
[SpringBoot] 경매장 메인페이지,로그인페이지,회원가입 매핑#2 (0) | 2024.10.09 |
---|---|
[Springboot] 경매장 프로젝트 엔터티 설계#1 (0) | 2024.10.05 |
[SpringBoot] 경매장 프로젝트 구상#0 (2) | 2024.09.28 |