Entity ?
DB에 테이블을 생성, 혹은 연결하는 역할 을 한다.
@Table (name = "EntityName")
위 Annotation 을 Entity에 선언하면 application.properties 에서 연결한 DB를 조회한 뒤,
똑같은 이름의 테이블이 존재한다면 해당 Table과 연결,
똑같은 이름의 테이블이 존재하지 않는다면 새로운 Table을 생성한다.
@Entity 가 붙은 클래스는 JPA에서 관리한다.
@Entity 와 관련된 Annotation 목록을 정리하면 다음과 같다.
@Entity
클래스를 엔티티로 선언한다.
@Table
엔티티와 매핑할 테이블을 지정한다.
@Id
테이블의 기본키에 사용할 속성을 지정한다
@GeneratedValue
@GeneratedValue(strategy = GenerationType.Auto)
기본키 값을 생성하는 전략을 명시한다.
생성 전략은 총 4가지가 존재한다.
GenerationType.Auto
GenerationType.INDENTITY
GenerationType.SEQUENCE
GenerationType.TABLE
나는 실무 / 토이프로젝트에서 Auto, INDENTITY 만 사용해봤다.
@Column
@Column(name = "item_id")
필드와 컬럼을 매핑한다.
name
unique
insertable
updatealbe
length
columnDefinition
@Column(columnDefinition = "varchar(5) defalut '10' not null)
precision, scale(DDL)
Lob
BLOB, CLOL 타입 매핑
CreationTimeStamp
insert 시 시간 자동 저장
UpdateTimeStamp
update 시 시간 자동 저장
Enumrated
enum 타입 매핑
Translent
해당 필드 데이터베이스 매핑 무시
Temporal
날짜 타입 매핑
CreateDate
Entity가 생성되어 저장도리 때 시간 자동 저장
LastModifiedDate
조회한 엔티티의 값을 변경할 때 시간 자동 저장
Entity.class
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@ToString
@Table(name = “”)
public class Entity {
@Id
@Column(name = “DB_DummyData”)
// @GeneratedValue(strategy = GenerationType.IDENTITY) Table 없을 때
private String dummyData;
}