entity라는 패키지를 만든 뒤, Memo라는 클래스를 다음과 같이 정의해줍니다.
package entity;
import lombok.ToString;
import javax.persistence.Entity;
import javax.persistence.*;
@Entity
@Table(name= "tbl_memo")
@ToString
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long mno;
}
@Entity
엔티티 클래스는 Spring Data JPA에서 @Entity 라는 어노테이션을 추가하여 사용합니다. 이 어노테이션을 추가한 해당 클래스가 엔티티를 위한 클래스이고, 해당 클래스의 인스턴스들이 JPA로 관리되는 엔티티 객체라는 것을 의미합니다.
@Table
@Entity 어노테이션과 같이 사용할 수 있는 어노테이션으로 데이터베이스 상에서 엔티티 클래스를 어떠한 테이블로 생성할 것인지에 대한 정보를 담기 위한 어노테이션입니다. @Table(name="t_member")와 같이 지정하는 경우에는 생성되는 테이블의 이름이 t_member로 생성됩니다. 테이블 이름 외에도 인덱스 생성 설정도 가능한,,!
@Id와 @GeneratedValue
@Entity가 붙은 클래스는 Primary Key에 해당하는 특정 필드를 @Id로 지정해야 됩니다. @Id가 사용자가 입력하는 값을 사용하는 경우가 아니라면 자동으로 생성되는 번호(시퀀스 자동증가 아시죠..?MySQL = auto_increment, 오라클 = Sequence, MS SQL = IDENTITY)를 사용하기 위해서 @GeneratedValue라는 어노테이션을 사용합니다
@GeneratedValue(strategy = GenerationType.IDENTITY) 는 PK를 자동생성할 때 사용합니다. 연결되는 DB가 오라클이면 별도의 번호를 위한 별도의 테이블을 생성하고, MySQL 또는 MariaDB라면 auto_increment를 기본으로 사용해서 새로운 레코드가 기록될 때 마다 다른 번호를 갖도록 처리됩니다.
키 생성 전략
AUTO - JPA 구현체가 생성 방식을 결정
IDENTITY - 사용하는 데이터베이스가 키 생성을 결정
SEQUENCE - 데이터베이스의 sequence를 이용해서 키를 생성 @SequenceGenerator와 함께 사용
TABLE - 키 생성 전용 테이블을 생성해서 키 생성 @TableGenerator와 함께 사용
추가적인 컬럼이 필요한 경우에도 @Column을 사용합니다. nullable, name, length를 이용해서 다양한 속성을 지정할 수 있습니다.
package entity;
import lombok.*;
import javax.persistence.Entity;
import javax.persistence.*;
@Entity
@Table(name= "tbl_memo")
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long mno;
@Column(length = 200, nullable = false)
private String memoText;
}
@Column과 반대로 데이터베이스 테이블에는 컬럼으로 생성되지 않는 필드의 경우 @Transient 어노테이션을 사용합니다. @Column의 기본값을 지정하기 위해서 (columnDefinition = "varchar(255) defalut 'Yes'") 와 같이 사용하기도 합니다.
'Spring + Boot' 카테고리의 다른 글
JPA 페이징 / 정렬 처리하기 (0) | 2021.04.08 |
---|---|
JPA 조회 / 수정 / 삭제 테스트 (0) | 2021.04.08 |
JpaRepository / JPA로 CREATE, INSERT 해보기 (0) | 2021.04.07 |
JPA 관련 application.properties 파일 (0) | 2021.04.07 |
Spring data JPA - ORM과 JPA (0) | 2021.04.06 |