ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JPA 타임스탬프(TimeStamp) 자동저장 하는 방법
    프로그래밍/JPA 2022. 12. 23. 23:05

    JPA를 사용하는 중에 필요한 기능으로, DB상에 저장된 시간을 기록하고 싶었다.

    (훗날, 히스토리를 갖고 원하는 날짜의 데이터를 찾을 방법이 이것뿐 .. )

     

    하지만 몇몇 자료를 찾았으나 제대로 나오는건 없어 제대로 나온걸 기록한다.

     

        @Column
        @CreationTimestamp
        @Temporal(TemporalType.TIMESTAMP)
        Date createTime;

    @Entity 어노테이션이 작성된 클래스의 필드변수에 다음과 같이 사용한다.

    반환 타입은 Json인 변수를 만들고, 해당 변수는 DB상의 컬럼으로 등록하기 위해 @Column 어노테이션을 사용한다.

     

    @Temporal 어노테이션을 사용하여 해당 데이터가 타임스탬프를 저장한다는 것을 의미한다.

    해당 어노테이션은 java.util.Data, java.util.Calendar 유형의 속성에 대해 지정해야한다.

    (본인은 코드상에 보이는 것과 같이 Date를 사용하였다)

    해당 어노테이션의 인자로 들어가는건 3종류가 존재한다.

    • TemporalType.TIME ( 현재 시점의 시간만 사용한다 )
    • TemporalType.DATE ( 현재 시점의 날짜만 사용한다 )
    • TemporalType.TIMESTAMP (default, 현재 시점의 시간과 날짜 둘 다 사용한다.)

     

     

     

    @CreationTimestamp 어노테이션을 사용하여, 날짜값을 넣어준다.

    해당 값은 일반적으로 정확히 한번 현재 VM날짜로 저장된다.

    해당 어노테이션은 다음과 같은 타입에 사용할 수 있다.

    • java.util.Date
    • java.util.Calendar
    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp
    • java.time.Instant
    • java.time.LocalDate
    • java.time.LocalDateTime
    • java.time.LocalTime
    • java.time.MonthDay
    • java.time.OffsetDateTime
    • java.time.OffsetTime
    • java.time.Year
    • java.time.YearMonth
    • java.time.ZonedDateTime

    JPA를 사용하지만 너무 어렵다..

    단순히 어노테이션의 종류가 많아서 어려운건지 항상 생각이든다.

    댓글

Designed by Tistory.