사용자 도구

사이트 도구


java:hibernate:generated

Hibernate @Generated

  • 테이블 생성시에 TIMESTAMP 자동 생성을 하도록 하는 것처럼, DB에 의해 insert/update 시에 자동으로 값이 생성, 업데이트 되는 필드를 지정한다.
  • 주로 TIMESTAMP에 지정될 것으로 보인다. 하지만, DB 자체에 테이블 선언시 특정 컬럼을 자동 생성가능하게 하는 기능이 있다면, 해당되는 컬럼에 다 사용할 수 있다.
  • 이 방식은 legacy 로 가급적 다른 방식을 권한다.
이 기능은 persist/merge 후에 자동 생성된 값을 다시 자동으로 DB에서 읽어들이기 때문에 DB 부담이 될 수도 있다. PK로 읽기 때문에 매우 높은 수준의 부담은 아니다.

Example

@Generated(GenerationTime.ALWAYS) 
@Column(name="create_date", insertable=false,updatable=false)
private LocalDateTime createDate;

MySQL의 경우 컬럼 선언이 다음과 같이 되어 자동으로 생서/수정시간이 생성되는 경우 사용 가능하다.

created_at      DATETIME(6)  NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
modified_at     DATETIME(6)  NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),

참조

java/hibernate/generated.txt · 마지막으로 수정됨: 2021/10/07 22:00 저자 kwon37xi