@Entity매핑 애너테이션을 이용해 엔티티 클래스와 테이블을 매핑할 수 있다.
클래스 레벨에 @Entity 애너테이션을 붙이면 JPA 관리 대상 엔티티가 된다.
✅ 엔티티 이름 변경하는 방법
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
// (1) name 애트리뷰트를 설정하지 않으면 기본값으로 클래스 이름을 엔티티 이름으로 사용한다.
@Entity(name = "USERS")
@Table(name = "USERS") // (2)
public class Member {
@Id
private Long memberId;
}
Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.codestates.entity_mapping.single_mapping.Member
데이터베이스의 테이블설정에서 기본키는 필수다.
JPA에서는 기본적으로 @Id 애너테이션이 붙여진 필드변수가 기본 키 컬럼이 된다. JPA는 기본키를 어떤 방식으로 생성해줄지 다양한 전략을 지원한다.
JPA에서 지원하는 기본키 생성전략
- 기본키 직접 할당
- 기본키 자동 생성
1️⃣ 기본키 직접 할당
애플리케이션 코드 상에서 @Id 애너테이션을 통해 해당 멤버필드 변수를 기본키를 직접 할당해주는 방식이다.
@NoArgsConstructor
@Getter
@Entity
public class Member {
@Id // (1)
private Long memberId;
public Member(Long memberId) {
this.memberId = memberId;
}
}
2️⃣ 기본키 자동 생성
⭐️ 아이덴티티(IDENTITY)
@NoArgsConstructor
@Getter
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //@GeneratedValue 애너테이션의 strategy 애트리뷰트의 값을 GenerationType.IDENTITY로 지정해준다.
private Long memberId;
public Member(Long memberId) {
this.memberId = memberId;
}
}
시퀸스(SEQUENCE)
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long memberId;
AUTO전략
테이블(TABLE)