스프링

Entity

박진웅 2023. 6. 27. 02:59

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 값을 넣어주지 않아도 자동으로 순서에 맞게 기본 키가 추가된다.