개발자가 직접 만든 값이 아닌 자동 생성된 값을 사용하겠다는 의미
IDENTITY
일반적으로 MySql 에서 많이 사용, Transaction 이 실행되기 전에 ID 값을 사전에 받아옴 -> 실제로 커밋되지 않아도 증가되고 있어서 특정 ID 값이 비는 현상이 일어나기도 함SEQUENCE
오라클, H2 DB 등에서 사용, INSERT 를 할때 ID 증가구문 함께 사용, Transaction 종료 시점에 ID 를 채워서 쿼리함TABLE
DB 종료에 상관없는 별도의 테이블을 만들어서 ID 값을 추출해서 사용AUTO
DB 에 맞게 적합한 값을 자동으로 넘겨줌, 디폴트 값
테이블 이름을 따로 설정, 기본적으로 jpa 가 알아서 설정해서 신경쓸 필요x
💥 인덱스나 제약사항들은 ENTITY 에 표기하지 않고 DB 에 맡기는 경우가 많음
별도의 column 이름을 설정, object 의 속성의 이름과 db 의 column 이름이 다른 경우 사용
일반적인 속성과 다르게 ddl 이 아니라 dml 에 영향
💥 ddl
데이터베이스의 스키마 객체를 생성(CREATE), 변경(ALTER), 제거(DROP) 하거나 권한의 부여나 박탈(GRANT, REVOKE), 주석(COMMENT),자료의 버림(TRUNCATE) 등을 수행하는 문장의 집단
💥 dml
스키마 객체의 데이터를 입력(INSERT), 수정(UPDATE), 조회(SELECT), 삭제(DELETE)하거나 테이블에 잠금을 설정하거나 (LOCK TABLE), SQL문의 처리의 절차에 대한 정보를 얻거나 (EXPLAIN PLAN), PL/SQL 모듈을 호출하는 작업(CALL)의 집단
DB 의 테이블과 별개의 데이터를 Entity 가 가지고 싶을때 사용
- 영속성 처리에서 제외
- 해당 객체와 생명주기 동일
default 가 ORDINER ( enum 데이터가 0부터 시작하여 순서가 있는 숫자로 DB 에 저장됨 )
- 에러가 많이 발생할 여지가 있음
- @Enumerated(value = EnumType.STRING) : 타입을 스트링으로 해서 사용할 것
Entity 를 구성하면서 부족했던 부분을 채울 수 있어서 좋았다. 특히 enum 데이터를 다룰때는 조금더 신경써야할 것 같다.