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

s2사랑해요s2김영한s2님의 프로필 이미지

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

JPA 적용1 - 개발

EntityManager 주입 질문드립니다.

24.05.16 12:23 작성

·

225

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
JpaConfig 안에 있는 EntityManager는 어떻게 주입이 되는 건가요?

 

제가 대략적으로 생각한 바는 ItemServiceApplication 이 @SpringBootApplication 어노테이션이 붙어있어서 스프링 부트로 작동하게 되고, @Import(JpaConfig.class) 애노테이션을 붙여줌으로써 스프링부트와 JpaConfig가 연동되게 되어서 스프링부트가 JpaConfig에서 쓰이는 EntityManager를 자동으로 주입해주는 것입니다.

 

제가 생각한 내용이 맞는지 궁금하고요 선생님들의 정확한 설명을 듣고 싶습니다. 감사합니다.

답변 2

1

OMG님의 프로필 이미지

2024. 05. 16. 12:56

안녕하세요. s2사랑해요s2김영한s2님, 공식 서포터즈 OMG입니다.

네, 대체로 이해하신 내용이 맞습니다. 부연 설명을 드리면

단순 @SpringBootApplication 어노테이션과 @Import만 으로는 동작하지는 않고 그 안에 추가적인 과정이 존재하는데요.

(1) build.gradle에 JPA를 사용할 수 있는 의존성을 추가해야하고

(2) 이 의존성을 추가함으로써 EntityManager 에 대한 구현체를 스프링 빈으로 등록이 되어 JpaConfig클래스에서 private final EntityManager em;

을 사용할 수 있는 것입니다.

em = new EntityManager();

이렇게 인스턴스를 생성하지 않고도 사용할 수 있는것이 스프링(부트)가 EntityManager를 스프링이 관리하는 객체(빈)으로 등록하였기 때문입니다.

감사합니다.

s2사랑해요s2김영한s2님의 프로필 이미지

2024. 05. 24. 18:15

설명 감사드립니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 05. 16. 12:26

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

질문에 대한 정확한 답변으로, “EntityManager 주입 질문“에 대해 설명드리겠습니다. 스프링 부트 환경에서 EntityManager를 사용하는 방법과 관련하여, 질문자님이 언급한 대로 @SpringBootApplication 어노테이션과 @Import를 사용하여 JpaConfig를 스프링 부트에 등록하는 과정을 통해 EntityManager가 주입되는 것에 대한 이해는 기본적으로 맞습니다.

스프링 프레임워크는 @Configuration 어노테이션이 달린 클래스를 구성 클래스로 인식하며, 이러한 클래스에서 @Bean 어노테이션을 통해 선언된 메소드가 반환하는 객체를 스프링 컨테이너에 빈으로 등록합니다. JpaConfig 같은 구성 클래스에서 EntityManagerFactory 또는 EntityManager를 빈으로 등록하고, 스프링이 이를 스프링 컨테이너에 주입(Injection)하는 방식으로 작동합니다.

스프링 부트는 자동 구성(Auto-Configuration) 기능을 제공하기 때문에, JPA를 사용하기 위한 EntityManager를 자동으로 구성하고 주입할 수 있는 기능을 포함하고 있습니다. 이 과정에서 application.properties 또는 application.yml 설정 파일을 통해 데이터베이스와 JPA 관련 설정을 조정할 수 있습니다.

다음은 스프링 부트와 JPA 연동에 대한 설명이 포함된 유사한 질문과 답변 링크입니다. 이 내용이 정확히 질문하신 사항을 해결해드릴 수 있을 것입니다.

  • EntityManager 관련 질문입니다.

    • 이 링크에서는 스프링 부트 환경에서 EntityManager 객체를 생성하고 주입받는 방법에 대해 설명하고 있습니다. 스프링 데이터 JPA를 사용할 때, 스프링 부트가 EntityManager를 자동으로 생성하고 관리하는 과정이 간략히 설명되어 있습니다.
  • 의존관계 주입

    • 이 글에서는 스프링에서 EntityManager 같은 객체를 어떻게 빈으로 등록하고, 의존성 주입을 통해 사용하는지에 대한 개념을 다룹니다. 스프링의 DI(Dependency Injection) 메커니즘과 관련된 질문의 답변으로, EntityManager 주입 과정을 이해하는 데 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.