[Fast Campus] 한번에 끝내는 Java/Spring : Entity

Player-Geun·2022년 2월 17일
0

✨ Entity 기본속성 (1)

@GeneratedValue

개발자가 직접 만든 값이 아닌 자동 생성된 값을 사용하겠다는 의미

  • IDENTITY

    일반적으로 MySql 에서 많이 사용, Transaction 이 실행되기 전에 ID 값을 사전에 받아옴 -> 실제로 커밋되지 않아도 증가되고 있어서 특정 ID 값이 비는 현상이 일어나기도 함
  • SEQUENCE

    오라클, H2 DB 등에서 사용, INSERT 를 할때 ID 증가구문 함께 사용, Transaction 종료 시점에 ID 를 채워서 쿼리함
  • TABLE

    DB 종료에 상관없는 별도의 테이블을 만들어서 ID 값을 추출해서 사용
  • AUTO

    DB 에 맞게 적합한 값을 자동으로 넘겨줌, 디폴트 값

@Table

테이블 이름을 따로 설정, 기본적으로 jpa 가 알아서 설정해서 신경쓸 필요x
💥 인덱스나 제약사항들은 ENTITY 에 표기하지 않고 DB 에 맡기는 경우가 많음

✨ Entity 기본속성 (2)

@Column

별도의 column 이름을 설정, object 의 속성의 이름과 db 의 column 이름이 다른 경우 사용

insertable & updatable

일반적인 속성과 다르게 ddl 이 아니라 dml 에 영향

💥 ddl

데이터베이스의 스키마 객체를 생성(CREATE), 변경(ALTER), 제거(DROP) 하거나 권한의 부여나 박탈(GRANT, REVOKE), 주석(COMMENT),자료의 버림(TRUNCATE) 등을 수행하는 문장의 집단

💥 dml

스키마 객체의 데이터를 입력(INSERT), 수정(UPDATE), 조회(SELECT), 삭제(DELETE)하거나 테이블에 잠금을 설정하거나 (LOCK TABLE), SQL문의 처리의 절차에 대한 정보를 얻거나 (EXPLAIN PLAN), PL/SQL 모듈을 호출하는 작업(CALL)의 집단

@Transient

DB 의 테이블과 별개의 데이터를 Entity 가 가지고 싶을때 사용

  • 영속성 처리에서 제외
  • 해당 객체와 생명주기 동일

@Enumerated

default 가 ORDINER ( enum 데이터가 0부터 시작하여 순서가 있는 숫자로 DB 에 저장됨 )

  • 에러가 많이 발생할 여지가 있음
  • @Enumerated(value = EnumType.STRING) : 타입을 스트링으로 해서 사용할 것

📝 마치며

Entity 를 구성하면서 부족했던 부분을 채울 수 있어서 좋았다. 특히 enum 데이터를 다룰때는 조금더 신경써야할 것 같다.

profile
주니어 개발자

0개의 댓글