Entity
Entity란?
jpa에서 관리되는 클래스 즉 객체를 의미한다
entity 클래스는 db와 매핑되어 jpa에 의해 관리된다
@Entity : JPA가 관리할 수 있는 Entity 클래스로 지정할 수 있다.
@Entity(name = "Memo") : Entity 클래스 이름을 지정할 수 있다. (default: 클래스명)
★JPA가 Entity 클래스를 인스턴스화 할 때 기본 생성자를 사용하기 때문에 반드시 현재 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 : 테이블의 기본 키를 지정해준다.
이 기본 키는 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할을 수행
따라서 기본 키 즉, 식별자 값을 넣어주지 않고 저장하면 오류가 발생
@Id 옵션만 설정하면 기본 키 값을 개발자가 직접 확인하고 넣어줘야 하는 불편함이 발생한다 그렇기에
@GeneratedValue 옵션을 추가하면 기본 키 생성을 DB에 위임할 수 있다.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
create table memo (
id bigint not null auto_increment,
contents varchar(500) not null,
username varchar(255) not null,
primary key (id)
);
여러가지 전략 중 IDENTITY 전략이란?
@GeneratedValue(strategy = GenerationType.IDENTITY)
id bigint not null auto_increment : auto_increment 조건이 추가된 것을 확인할 수 있다.
해당 옵션을 추가해주면 개발자가 직접 id 값을 넣어주지 않아도 자동으로 순서에 맞게 기본 키가 추가된다.