• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

08 jpa로 db 데이터 보내는 질문입니다.

22.06.21 22:04 작성 조회수 121

1

안녕하세요.

08 강의에서 jpa로 데이터를 디비로 넘기는 것을 말씀하셨는데요.

 

repository 인터페이스를 하나 만들고(crud 인터페이스 상속)

그 이후에 객체를 따로 생성하지 않았는데 어떻게 쓸 수 있냐는 것에 대해 @autowired 어노테이션이 가능하게 해준다라고 말씀하셨는데 여기서 질문이 있습니다.

 

간단히 설명해주셨지만 repository 인터페이스가 인터페이스라 사실 구현부가 없고 그 인터페이스를 상속받는 클래스에서 구현을 해준 다음 그 클래스를 객채화 시켜야 쓸 수 있는데(메모리에 올리기 위해서는),

 

이렇게 구현이 다 되어 있는 클래스가 아닌 구현이 안되어 있는 인터페이스도 @autowired를 통해 객체화가 가능하다는 말씀이신가요 ? 그렇다면 인터페이스에서 선언만 해놓은 메서드가 어떠한 방식으로 동작할지는 어떻게 알 수가 있나요 ? (따로 구현 로직을 안 작성해도 @autowired로 객체화가 가능하다면)

 

답변 부탁드립니다.

 

감사합니다.

 

답변 1

답변을 작성해보세요.

0

CrudRepository 인터페이스를
Cmd(또는 Ctrl)누르고 들어가보면
여러 기본 추상 메소드를 확인할 수 있습니다.

이를 상속받는 ArticleRepository는
자동으로 이를 구현하는 구현체 클래스를 추가함과 동시에
객체로 생성하여 등록하는 과정을 진행합니다.

이러한 상세 과정은
JPA가 추상화된 절차를 통해 자동 진행하므로,
직접 수행하지 않아도 됩니다.

수도 코드로 표현하면, 다음 정도랄까요?

ArticleRepository articleRepository = new ArticleRepositoryImpl(); // 구현체 객체를 생성
IoCContainer.add(articleRepository); // 구현체 객체를 스프링부트 컨테이너에 등록

위 과정을 통해
ArticleRepository를 구현한 객체는
스프링부트 컨테이너에 등록이 되고,

등록된 객체는
@Autowired 어노테이션을 통해
손쉽게 가져다가 쓸 수 있습니다.

더 자세한 내용이 궁금하다면?
① 강의 후반부, IoC 컨테이너 부분 학습
② 구글링 "jpa repository 사용법"
③ 기타 JPA 서적 또는 강의 참조