inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

JPA 적용1 - 개발

EntityManager 주입 질문드립니다.

336

s2사랑해요s2김영한s2

작성한 질문수 10

0

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

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

 

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

 

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

spring mvc jpa querydsl spring-data-mybatis spring-jpa

답변 2

1

OMG

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

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

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

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

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

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

em = new EntityManager();

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

감사합니다.

0

s2사랑해요s2김영한s2

설명 감사드립니다!

0

인프런 AI 인턴

안녕하세요, 인프런 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 주입 과정을 이해하는 데 도움이 될 수 있습니다.

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

RepositoryTest의 패키지 위치가 domain인 이유

0

29

2

REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!

0

29

1

update()에 사용하는 setter 질문드립니다.

0

47

1

SQL 중심적 개발의 문제점에 대한 질문

0

72

1

혹시 Containing 을 안쓰신 이유가 있을까요?

0

83

2

[공유] 스프링부트 4.x 버전 mybatis 연동

0

173

1

@repository 어노테이션

0

89

3

ItemService

0

58

1

논리 커밋, 물리 커밋 질문드립니다.

0

54

1

내부 트랜잭션 커밋은 필수인가요?

0

57

1

프록시 커넥션 객체를 반환할 때 생성하는건가요?

0

54

1

Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)

2

178

2

JPQL 대신 네이티브 쿼리를 사용해야 하는 경우

0

77

1

@EventListener(ApplicationReadyEvent.class) 관련

0

88

1

트랜잭션 동기화 매니저와 데이터 소스

0

76

1

DB 관련 강의 개설 계획은 없으신건가요?

0

133

2

물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요

0

94

1

스프링 3 버전 이상 rollbackFor 변경된듯요

1

112

1

트랜잭션 전파 질문.

0

87

1

프로젝트 오픈 에러

0

126

1

외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다

0

83

2

같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환

0

72

1

h2 인메모리 테스트중 예약어 충돌날 경우 대처방법

0

102

1

커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문

0

98

2