모든 엔티티에 공통적으로 쓰이는 부분들을 만들어두어야겠다.
일단, 기본적으로 데이터베이스에 들어가기 위해서는 모든 테이블에 id라는 속성이 존재한다.
또한, 생성일자, 수정일자를 등록해서 사용하려고 한다.
생성, 수정일자의 경우에는
- 사용자 : 비밀번호 최종 수정일자를 확인해, 수정일자를 기준으로 일정 기간이 지나면 비밀번호 재설정을 요청하는 알림을 추가한다.
- 게시물 : 게시물 작성일자를 추가하고, 수정되었을 경우, 수정됨을 알릴 수 있다.
- 댓글 : 게시물과 마찬가지로 작성일자, 수정일자를 추가한다.
- 메시지 : 카톡과 마찬가지로, 보내진 시간등을 설정해둘 수 있다.
이렇게 다양하게 쓰이기 때문에, BaseEntity로 설정해, 모든 엔티티에서 추가적으로 id, createdTime, updatedTime을 따로 만들 필요가 없게 할 것 이다.
@MappedSuperclass
public class BaseEntity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@CreatedDate
@Column(name = "CREATED_TIME", nullable = false, updatable = false)
private LocalDateTime createdTime;
@Column(name = "LAST_MODIFIED_TIME", nullable = false)
private LocalDateTime lastModifiedTime;
}
이런식으로 정리를 했다.
어노테이션에 대한 설명을 넣자면,
사실 이미 다 써둔 글이 있다.
@MappedSuperclass는여기에, 기본키나 필드 매핑은 링크를 보면 정리해두었다.
@CreatedDate는 매핑된 엔티티가 생성될 때 자동으로 작성되는 것이며, lastModifiedTime은 원래 @LastModifiedDate라는 어노테이션이 존재하지만, 비밀번호 수정시에만 설정할 수 있도록, @Column외의 어노테이션은 두지 않았다.
또한, 이렇게 @CreatedDate를 등록했을 때, 이를 추가적으로 동작하게 메인 애플리케이션에서 적용을 시켜주어야 한다.
@SpringBootApplication
@EnableJpaAuditing
public class BoardUpgradedApplication {
public static void main(String[] args) {
SpringApplication.run(BoardUpgradedApplication.class, args);
}
}
여기에 있는 @EnableJpaAuditing 어노테이션이 @CreatedDate, @LastModifiedDate(사용자의 경우 비밀번호 수정을 따로 두기 위해 사용하지는 않았다)가 있는 인스턴스를 엔티티의 생성, 수정시에 초기화 시킬 수 있게 해준다.
이제 이를 이용해 멤버를 조금 더 손봐야겠다.
'스프링 공부 > 게시판 프로젝트 만들기' 카테고리의 다른 글
[스프링] 13. Member 엔티티 만들기 (0) | 2023.01.11 |
---|---|
[스프링] 12. Member 엔티티에 대해 생각해보기 (0) | 2023.01.11 |
[스프링] 10. JWT를 구현하기. 찐막: 필터만들기와 SecurityConfiguration에 JWT 추가하기 (0) | 2023.01.09 |
[스프링] 9. JWT를 구현하기. 2단계: 인증의 예외를 가져와보자. (0) | 2023.01.09 |
[스프링] 8. JWT를 구현하기. 1단계: 일단 JWT를 위한 토큰을 만들자. (2) (1) | 2023.01.06 |