JPA에서 관리되는 클래스 즉, 객체
DB 테이블과 매핑되어 JPA에 의해 관리됨
@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
public class Memo {
@Id
private Long id;
// nullable: null 허용 여부
// unique: 중복 허용 여부 (false 일때 중복 허용)
@Column(name = "username", nullable = false, unique = true)
private String username;
// length: 컬럼 길이 지정
@Column(name = "contents", nullable = false, length = 500)
private String contents;
}
@Entity : JPA가 관리할 수 있는 Entity 클래스로 지정할 수 있음
@Table : 매핑할 테이블을 지정
@Column
@Id : 테이블의 기본 키를 지정
이 기본 키는 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할을 수행
@Id 옵션만 설정하면 기본 키 값을 개발자가 직접 확인하고 넣어줘야 하는 불편함이 발생
@GeneratedValue 옵션을 추가하면 기본 키 생성을 DB에 위임할 수 있음
@GeneratedValue(strategy = GenerationType.IDENTITY)
id bigint not null auto_increment : auto_increment 조건이 추가됨
해당 옵션을 추가해주면 개발자가 직접 id 값을 넣어주지 않아도 자동으로 순서에 맞게 기본 키가 추가됨
Memo memo = new Memo(); // 비영속 상태
memo.setId(1L);
memo.setUsername("Robbie");
memo.setContents("비영속과 영속 상태");
new 연산자를 통해 인스턴스화 된 Entity 객체
아직 영속성 컨텍스트에 저장되지 않았기 때문에 JPA의 관리를 받지 않음
persist(entity)
remove(entity)