사용자 도구

사이트 도구


java:jpa:datetime

JPA Date Time

Joda Time

    • MySQL에 millisecond 단위가 없는데, 데이터를 넣을 때 ms를 넣으면 무조건 올림이 돼버리는 현상 발생.
    • Date 필드의 길이를 6으로 지정해서 애초에 잘라버리면 될 듯(columnDefinition = “datetime(6)”).
  • Jodatime 설정 2. JPA Configuration
    <property name="jadira.usertype.autoRegisterUserTypes" value="true" /> 1
    <property name="jadira.usertype.databaseZone" value="jvm" />

생성/수정 시간 (creation datetime, update datetime)

Hibernate 의 CreationTimestamp, UpdateTimestamp

@Column
@CreationTimestamp
private LocalDateTime createDateTime;
 
@Column
@UpdateTimestamp
private LocalDateTime updateDateTime;

DB DEFAULT 사용시

  • MySQL에서 DEFAULT 값 사용시
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),
  • 해당 필드에 insertable=false, updatable=false 설정을 해준다.
  • EntityManager.persist(), merge() 이후 다시 로드 하려면 EntityManager.refresh(entity)를 사용한다. 안그러면 엔티티 저장직후에 바로 사용하고자 할 때 생성/수정 시각 필드가 null이 된다.

Java 8 DateTime

Java 8 Year Month

참조

java/jpa/datetime.txt · 마지막으로 수정됨: 2019/08/13 09:55 저자 kwon37xi