Spring Boot - Entity

김명식·2023년 5월 2일
0

Spring Boot

목록 보기
1/11
post-thumbnail

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

      • JPA 구현체가 자동으로 생선전략 결정
    • GenerationType.INDENTITY

      • 기본키 생성을 데이터베이스에 위임
    • GenerationType.SEQUENCE

      • DB 시퀀스 오브젝트를 이용한 기본키 생성
        @SequenceGenerator를 사용하면 시퀀스 등록
    • GenerationType.TABLE

      • 키 생성용 테이블 사용
        @TableGenerator 필요

      나는 실무 / 토이프로젝트에서 Auto, INDENTITY 만 사용해봤다.

  • @Column
    @Column(name = "item_id")
    필드와 컬럼을 매핑한다.

    • name

      • 필드와 매핑할 컬럼의 이름을 설정한다
    • unique

      • 유니크 제약 조건을 설정한다
    • insertable

      • insert 가능 여부를 설정한다
    • updatealbe

      • update 가능 여부를 설정한다
    • length

      • String 타입의 문자 길이 제약 조건을 설정한다.
    • columnDefinition

      • 데이터베이스 컬럼 정보를 직접 기술한다.
        @Column(columnDefinition = "varchar(5) defalut '10' not null)
    • precision, scale(DDL)

      • BigDecimal 타입에서 사용(BigInteger 가능)
        precision은 소수점을 포함한 전체 자리 수,
        scale은 소수점 자리 수.
        Double과 Float 타입에는 적용되지 않음.
  • 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;

}
profile
BackEnd & AWS Developer

0개의 댓글