인프런 커뮤니티 질문&답변

highjune님의 프로필 이미지

작성한 질문수

쥬쥬와 함께 하루만에 끝내는 스프링 테스트

의존성 검증 : Controller는 Entity를 사용하고 있을까?

Model 의존 java.lang, jakarta

작성

·

129

0

좋은 강의 잘 듣고 있습니다.

<의존성 검증: Controller는 Entity를 사용하고 있을까?> 강의에서요.

11:40초 쯤에서 에러 로그들이 의미하는 것이 궁금합니다.

Class <com.jyujyu.dayonetest.model.StudentFail> is annotated with <jakarta.persistence.Entity>

Class <com.jyujyu.dayonetest.model.StudentPass> extends class <java.lang.Object>

..

위 같은 에러는 해당 모델들(StudentFail, StudentPass) 이 @Entity 로 정의되었으므로 jakarta.persistence.Entity, jakarta.persistence.Table> 에서 사용된 것은 알겠는데

java.lang.Object 로 사용된 것은 어떻게 봐야 하나요?

단순 Object 라면, 모든 클래스는 Object 를 의존하는 것 아닌가요?

미리 답변 감사합니다!

답변 2

0

highjune님의 프로필 이미지
highjune
질문자

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

highjune님, 질문해주셔서 감사합니다.

실제로 모든 Java 클래스는 java.lang.Object 클래스를 상속받기 때문에 java.lang.Object로 사용된 것에 대해 특별한 경우라기보다는 Java의 상속 구조의 기본을 따르고 있는 것입니다. 따라서, 모든 클래스가 Object 클래스를 직간접적으로 의존하게 되는 것은 맞습니다.

@Entity로 어노테이션 되어있다고 표시된 Class <com.jyujyu.dayonetest.model.StudentFail>는 JPA의 엔티티로서 데이터베이스 테이블과 매핑되어 있음을 의미합니다. 이는 해당 클래스가 데이터베이스의 엔티티를 나타내기 위해 JPA 표준인 jakarta.persistence 패키지의 Entity 어노테이션을 사용한다는 것을 나타냅니다.

에러 로그가 나타내는 java.lang.Object의 사용에 대해 심층적으로 걱정할 필요는 없으메, Java의 모든 클래스가 기본으로 상속하는 특징 때문에 나타난 것으로 이해하시면 됩니다.

추가적으로 @Entity 어노테이션을 사용해 클래스를 엔티티로 정의할 때는 Spring Boot Reference Documentation에서 설명하는 바와 같이, jakarta.persistence 패키지의 어노테이션을 사용하여 JPA를 통한 데이터 영속성 관리를 하게 됩니다.

해당 모델들이 엔티티로서 정의되었기 때문에 JPA 스펙을 따르고, 데이터베이스 테이블에 매핑되어 데이터를 관리하는 것과 Java 기본 상속 구조에 따라 Object 클래스를 상속하는 것은 자연스러운 부분입니다.

질문이 있으시다면 언제든지 추가로 질문 주세요.

highjune님의 프로필 이미지

작성한 질문수

질문하기