👻 시간 엔티티 만들기!
매번 DB 에 생성시간과 수정시간을 삽입 하고 갱신 하는 것은 번거로운 일 입니다.
자동으로 생성시간과 수정시간을 관리해주는 JPA Auditing 을 사용합니다.
자 그러면 domain 패키지에 BaseTimeEntity 를 생성해봅시다.
@Getter
@MappedSuperclass // 해당 엔티티를 상속한 엔티티의 속성 값도 엔티티에 적용
@EntityListeners(AuditingEntityListener.class)// Auditing 기능을 적용
public class BaseTimeEntity {
@CreatedDate // 엔티티가 생성되어 저장될 때 시간이 자동 저장
private LocalDateTime createdTime;
@LastModifiedDate // 조회한 엔티티의 값을 변경할 때 시간이 자동 저장
private LocalDateTime modifiedTime;
}
👻 BaseTimeEntity 클래스를 Posts 클래스에 상속관계를 맺어보자!
@Getter // getter() 를 생성해 줍니다.
@NoArgsConstructor // 기본 생성자를 생성해 줍니다.
@Entity // 관계형 테이블과 링크될 클래스임을 정의합니다.
public class Posts extends BaseTimeEntity { // -> 상속 관계
}
👻 main 클래스에 @EnableJapAuditing 을 붙여 Auditing 기능을 활성화 해보자!.
@EnableJpaAuditing // JAP Auditing 활성화
@SpringBootApplication
public class BoardSpringbootWebserviceApplication{
public static void main(String[]args) {
SpringApplication.run(BoardSpringbootWebserviceApplication.class, args);
}
}
👻 테스트 코드를 작성해보자!
@Test
@DisplayName("Base_Entity_TEST")
void Base_Entity_TEST() {
// given
LocalDateTime now = LocalDateTime
.of(2022, 4, 1, 0, 0, 0);
postsRepository.save(Posts.builder()
.title("테스트")
.content("테스트 중 입니다.")
.author("홍길동")
.build()
);
// when
List<Posts>all = postsRepository.findAll();
// then
assertThat(all.get(0).getCreatedTime()).isAfter(now);
assertThat(all.get(0).getModifiedTime()).isAfter(now);
}
.isAfter() 메서드로 생성된 now 값과 비교하여 검증을 하였습니다.
'Book > Spring boot 와 AWS로 혼자 구현하는 웹서비스' 카테고리의 다른 글
[Book] 17) 수정 및 삭제 기능을 만들어보자! (0) | 2022.04.02 |
---|---|
[Book] 16) 전체 조회 화면 및 기능을 만들어보자! (0) | 2022.04.02 |
[Book] 15) 머스테치로 화면 구성을 해보자! -2 (0) | 2022.04.01 |
[Book] 14) 머스테치로 화면 구성을 해보자! -1 (0) | 2022.04.01 |
[Book] 12) H2 DB 웹 콘솔에서 직접 접근해보자! (0) | 2022.04.01 |
[Book] 11) API 만들어보기! -4 (0) | 2022.03.31 |
[Book] 10) API 만들어보기! -3 (0) | 2022.03.31 |
[Book] 9) API 만들어보기! - 2 (0) | 2022.03.30 |