Entity
- Entity: JPA에서 관리되는 클래스. 즉, 객체
- Entity 클래스는 DB의 테이블과 매핑되어 JPA에 의해 관리됨
Entity Annotation
@Entity
@Table(name = "memo")
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false, unique = true)
private String username;
@Column(name = "contents", nullable = false, length = 500)
private String contents;
}
- @Entity : Entity 클래스로 지정
- @Entity(name = "Memo") : Entity 클래스명 지정(default: 클래스명)
- 기본 생성자 필요
- JPA가 Entity 클래스를 인스턴스화 할 때 기본 생성자를 사용하기 때문
- @Table : 매핑할 테이블 지정
- @Table(name = "memo") : 매핑할 테이블명 지정(default: Entity명)
- @Column :
- @Column(name = "username") : 테이블의 컬럼명 지정(default: 객체의 필드명)
- @Column(nullable = false) : 데이터의 null값 허용 여부 지정(default: true)
- @Column(unique = true) : 데이터의 중복값 허용 여부 지정(default: false)
- @Column(length = 500) : 데이터 값(문자)의 길이 제약조건 (default: 255)
- @Id : 테이블의 PK 지정
- 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할 수행
- PK없으면 오류 발생
- @Id 옵션만 설정하면 PK값을 개발자가 직접 확인하고 넣어줘야함
- @GeneratedValue: 기본 키 생성을 DB에 위임
- @GeneratedValue(strategy = GenerationType.IDENTITY)
id bigint not null auto_increment
: auto_increment 조건이 추가됨
- 개발자가 직접 id 값을 넣어주지 않아도 자동으로 순서에 맞게 PK값 추가됨