Spring JPA @CreationTimestamp와 @UpdateTimestamp

Jang990·2023년 2월 1일
0
post-custom-banner

22년 08월 15일에 작성된 글

JPA를 통해 DB에 시간 넣기

JPA를 사용하면서 DB에 현재 시간을 넣은 방법중 하나는 Hibernate의 어노테이션인 @CreationTimestamp, @UpdateTimestamp 어노테이션을 사용하는 방법이 있다.

이외에도 Auditing을 사용할 수 있다.

이번 글에서는 @CreationTimestamp@UpdateTimestamp를 중점으로 확인해보겠다.


@CreationTimestamp vs @UpdateTimestamp

비교를 위해 다음과 같은 엔티티를 만들고 다음 코드를 실행했다.

@Entity
@Data
public class TestModel {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long testId;
	
	private String name;
	
	@CreationTimestamp
	private Timestamp createdTime;
	@UpdateTimestamp
	private Timestamp checkTime;
	
}
//실행코드
try {
	TestModel test = new TestModel();
	// 1
	test.setName("Jang");
	testRe.save(test);
	Thread.sleep(3*1000);

	// 2
	testRe.save(test);
	Thread.sleep(3*1000);

	// 3
	test.setName("Kim");
	testRe.save(test);
	Thread.sleep(3*1000);

	// 4
	Timestamp timestamp = new Timestamp(0);
	test.setCrawlingTime(timestamp);
	test.setCreateTime(timestamp);
	testRepository.save(test);
} catch (InterruptedException e) {
	e.printStackTrace();
}

try {
} catch (InterruptedException e) {
	e.printStackTrace();
}

다음 코드는 저장을 할 때 DB내에 시간을 저장해준다. 그러나 save를 할 때마다, @CreationTimestamp이 붙은 createdTime은 시간값이 변하지 않지만 @UpdateTimestamp이 붙은 checkTime은 계속 시간값이 변한다. 하지만 마지막처럼 createdTime의 경우 Timestamp를 임의로 설정한다면 값이 변한다. 다음표를 참고하자.

흐름test_idcreate_timecheck_tiemname
112022-08-15 18:04:372022-08-15 18:04:37Jang
212022-08-15 18:04:372022-08-15 18:04:40Jang
312022-08-15 18:04:372022-08-15 18:04:44Kim
411970-01-01 09:00:002022-08-15 18:04:47Kim
profile
공부한 내용을 적지 말고 이해한 내용을 설명하자
post-custom-banner

0개의 댓글