inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

Entity 객체에 접근제어자로 protected를 사용하는 이유가 궁금합니다.

해결된 질문

397

minho_kim2

작성한 질문수 2

1

안녕하세요. 30강 강의를 수강하고 한가지 궁금한 점이 있어 질문드립니다.

book 테이블에 매핑되는 Entitiy객체인 Book.java 클래스 생성 시 JPA 사용을 위해 기본 생성자를 넣어주는데 이때 접근 제어자를 protected를 사용하는 것을 확인했습니다.

protected 접근 제어자가 본래 상속관계에 있는 객체에 접근할 때 쓰는 것으로 알고 있는데 BookRepository 인터페이스가 JpaRepository를 상속받고 Map 구조에 Book이 들어가서 protected를 사용하는 것인지 궁금합니다.

또한 protected 접근 제어자 외에 public, default 접근 제어자를 사용해도 되는 것인지 궁금합니다.

java spring aws mysql spring-boot jpa

답변 1

0

최태현

안녕하세요! minho_kim2님! 🙂 질문 주셔서 감사합니다!

 

먼저

protected 접근 제어자가 본래 상속관계에 있는 객체에 접근할 때 쓰는 것으로 알고 있는데 BookRepository 인터페이스가 JpaRepository를 상속받고 Map 구조에 Book이 들어가서 protected를 사용하는 것인지 궁금합니다.

와 관련해서는, JpaRepository<Book, Long>을 사용해서라기보다, JPA가 내부적으로 동작하는데 리플렉션이란 기술을 사용하고, JPA에서 리플렉션 기술을 사용하기 위해 기본 생성자가 필요하기 때문입니다.

비슷한 질문인 아래 질문을 확인해보셔도 좋을 것 같아요! 👍

https://www.inflearn.com/questions/1190458/entity-%EA%B0%9D%EC%B2%B4%EC%97%90-%EA%B8%B0%EB%B3%B8%EC%83%9D%EC%84%B1%EC%9E%90%EB%A5%BC-%EB%84%A3%EC%96%B4%EC%A3%BC%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

Entity의 기본 생성자 접근 지시어의 경우, public 을 사용하셔도 괜찮고요! default 는 안될거에요! 다만 모두에게 오픈되는 public 보다는 제한적으로 오픈되는 protcted 가 조금 더 선호되는 편입니다. 일종의 캡슐화 라고 봐주시면 될 것 같아요!

 

 

추가적으로 "Map 구조"라고 말씀해주신건 제네릭 타입 파라미터를 지칭해주신 것으로 보여요!

혹시나 제네릭 타입 파라미터와 관련해서 영상으로 찾아보고 싶으시다면, https://www.inflearn.com/course/%EC%BD%94%ED%8B%80%EB%A6%B0-%EA%B3%A0%EA%B8%89%ED%8E%B8 강의의 무료 1강을 확인해보셔도 좋습니다! 강의 언어가 코틀린이긴 하지만, 자바와 코틀린이 동일한 JVM 언어이고 제네릭 관련한 문법 차이도 없어서, 제네릭 타입 파라미터에 대해 쉽게 이해하시기 좋을거에요! 😊

image

답변이 도움이 되었으면 좋겠습니다. 감사합니다!! 🙏

 

0

minho_kim2

답변감사합니다!

패키지 구분에 대해 궁금한게 있습니다

0

25

2

리액트 관련 질문이 있습니다.

0

65

2

스프링부트 버전

0

76

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

59

2

33강. UserLoanHistory의 관계성에 대한 질문

1

56

2

Java JDK 버전 문의의 건

0

135

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

90

3

h2 console 접속했을 테이블 질문

1

67

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

80

2

15강. updateUser() 질문

0

57

2

깃허브 질

0

84

2

여기까지 다 끝냈다고 하셨는데

0

79

2

왜안될까요

0

72

2

MySQL 창이안ㄴ뜹니다

0

59

2

포스트맨

0

52

1

spring 개념적인 질문

0

72

2

인텔리제이 샘플코드 실행 안됨 오류

0

142

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

87

1

마이그레이션 오류입니다.

0

175

3

Whitelabel Error Page 오류가 났습니다.

0

166

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

94

3

궁금한게 있습니다.

0

61

2

DTO 관련

0

70

2

궁금한게 있습니다!

0

69

2