Spring-Boot,JPA로 질문/답변 게시판 구현(37)

Spring-Boot, JPA로 질문/잡변 게시판 구현 및 배포

자바지기님 유튜브 강의 정리

6-5 중복 제거 및 리팩토링

  • model 즉 도메인을 먼저 살펴보면 공통적으로 Id, createDate를 가지고있는데 이 부분을 부모 클래스로 추출해볼것이다. 그리고 스프링을 활용하면 생성시간을 자동으로 등록해줄 수 있다.

    @MappedSuperclass
    @EntityListeners(AuditingEntityListener.class)
    public class AbstractEntity {
      @Id
      @GeneratedValue
      @JsonProperty
      private Long id;
          
      @CreatedDate
      private LocalDateTime createDate;
      @LastModifiedDate
      private LocalDateTime modifiedDate;
          
      public String getFormattedCreateDate() {
        if(createDate == null) {
          return "";
        }
        return createDate.format(DateTimeFormmater.pattern("yyyy.mm.dd HH:mm:ss"));
      }
    }
    
    • jpa에서 부모클래스에 해당하는 클래스를 사용할 때 @MappedSuperclass 어노테이션을 추가해준다.
    • 자동으로 데이터가 추가되도록 하기위해 @CreatedDate 어노테이션을 추가한다. 마지막 변경시간은 @LastModifiedDate 어노테이션을 추가한다.
  • @CreatedDate@LastModifiedDate는 추가만하면 되는것이아니라 설정파일에 데이터변경사항을 추적할 수 있도록 해야한다.

    @SpringBootApplication
    @EnableJpaAuditing
    public class MySlippApplication {
      ...
    }
    
    • @EnableJpaAuditing을 추가하여 어노테이션을 인식하여 자동으로 생성시간, 수정시간을 저장한다.
  • User, Question, Answer클래스에서 AbstractEntity 클래스를 상속한다.

    public class User extends AbstractEntity {
      ...
    }
      
    public class Question extends AbstractEntity {
      ...
    }
      
    public class Answer extends AbstractEntity {
      ...
    }
    
  • 테스트

여기까지 실습

댓글남기기