"인프런 - 실전! 스프링부트와 JPA 활용1 강의를 듣고 작성한 글 입니다."
www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1#
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런
실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다. 초급
www.inflearn.com
강의 중 기술적인 부분의 내용들
JpashopPracticeApplication 과 같은 실행 클래스에 @SpringBootApplication 어노테이션이 있으면,
Repository 클래스의 @Repository 어노테이션과 같이 내부에 @Component 어노테이션이 지정된 클래스들은 모두 컴포넌트 스캔의 대상이 되기 때문에 기본적으로 동작방식 자체가 실행 클래스가 있는 패키지와, 패키지 하위에 있는 것들까지 모두 다 컴포넌트 스캔을 수행한다.
(컴포너트 스캔이 정확하게 어떤 뜻인지는 다음에 알아보자.)
그렇게 해서 Spring Bean 으로 클래스를 자동으로 등록한다.
(이번에 만든 MemberRepository 클래스는 실행 클래스의 하위에 해당되기 때문에 당연히 컴포넌트 스캔의 대상이 된다.)
* 컴포넌트 스캔과 같이 JPA 보다는 스프링의 개념에 더 가까운 내용들은 후에 따로 스프링에 대해 자세히 학습하면서 정리하도록 하자.
- Repository.java
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component // 컴포넌트 어노테이션
public @interface Repository {
...........
}
Spring 은 어떤 기능까지 제공해줄까?
@PersistenceContext 어노테이션이 있으면 Spring 이 생성한 JPA 의 EntityManager 를 해당 클래스에 주입시켜 준다.
순수하게 JPA 를 사용하면 개발자가 직접 EntityManagerFactory 에서 EntityManager 를 직접 꺼내서 사용해야 하는데, 그런것 없이 @PersistenceContext 어노테이션을 선언한 것 만으로 Spring 이 직접 EntityManager 클래스를 주입해 주는 것이다.
만약 EntityManagerFactory 를 직접 주입받고 싶다면 @PersistenceUnit 어노테이션을 활용할 수 있다.
- MemberRepository.java
@Repository
public class MemberRepository {
@PersistenceContext
private final EntityManager em;
// create Repository method(save, findOne, findAll ....)
}
'Spring boot' 카테고리의 다른 글
스프링 부트 - 회원 기능 테스트 학습내용 (0) | 2021.01.07 |
---|---|
스프링 부트 - 회원 Service 개발 학습내용 (0) | 2021.01.06 |
스프링 부트 - Entity 설계 시 주의할 점(2) (0) | 2020.12.28 |
스프링 부트 - Entity 설계 시 주의할 점(1) (0) | 2020.12.28 |
스프링 부트 - JPA 와 DB 설정 및 동작확인 - Tip (0) | 2020.12.20 |