• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

BaseTimeEntity를 Item 에서 extends 해서 사용할 경우에는 어떻게 해야하는건지 궁금합니다.

23.02.04 22:13 작성 조회수 591

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

해당 강의에서는 Item 내부에 createdDate 필드를 만들고 implements Persistable을 할 때
isNew 함수가 createdDate == null 을 하더라도 문제없이 동작할 수 있음을 확인했습니다.

그런데 Item 자체가 public class Item extends BaseEntity implements Persistable<String> 이런식이라면
즉, createdDate가 Item class 내부가 아닌, 외부에 존재한다면 isNew 함수를 만들때 createdDate를 참조해올 수 없는데 어떻게 해결해야하는지 궁금합니다.

제 개인적으로 해결방안이라고 생각한 것은

  1. BaseTimeEntity의 createdDate를 public으로 오픈한다.

  2. BaseTimeEntity에서 implements Persistable 을 받고 isNew함수를 정의한다.

    1. 이렇게 할 경우에 추가적으로 생기는 문제점은

      1. getId() 함수를 Override해야하는데, BaseTimeEntity class 내부에 id 값이 따로 없어서 곤란하다고 여겨집니다.

      2. getId() 함수를 만들어도 엔티티마다 id의 타입이 다를 수도 있다고 생각되는데 타입 문제는 어떻게 해결해야하는지 모르겠습니다.

이정도 두 가지가 떠오르긴 했는데, 효과적인 방법은 아니라고 생각되어

프로젝트 개발시에 엔티티들이 공통적으로 BaseEntity, BaseTimeEntity를 상속받고 있는 상황일때는 isNew함수를 어떻게 정의해야하는지 알려주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

0

권선경님의 프로필

권선경

2023.02.09

getter로 createdDate에 접근하면 될 것 같네요

권선경님 답변 감사합니다^^