오늘이라도
[VI. 스프링 DB 접근 기술] 23. 스프링 데이터 JPA 본문
반응형
https://github.com/upcake/hello-spring
* 오늘의 단축키 & 기능
1. 스프링 데이터 JPA
- SpringDataJpaMemberRepository.java
//인터페이스 - 인터페이스의 경우에는 extend 사용하여 상속
//인터페이스는 다중 상속이 된다.
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
//findBy~~~ ~~~에 따라서 쿼리를 짜준다
//select m from Member m where m.name = ?
@Override
Optional<Member> findByName(String name);
//외에도 findByNameAnd~~~
//인터페이스 이름만으로도 개발이 가능하다
}
- SpringConfig.java
@Configuration //설정 파일
public class SpringConfig {
// private DataSource dataSource; //Jdbc용
// private EntityManager em; //JPA용
//
// public SpringConfig(DataSource dataSource, EntityManager em) {
// this.dataSource = dataSource;
// this.em = em;
// }
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean //스프링 빈을 내가 등록할 거야
public MemberService memberService() {
// return new MemberService(memberRepository());
//인터페이스를 넣으면 자동으로 스프링이 구현체를 만들어서 Bean으로 등록한다.
return new MemberService(memberRepository);
}
// @Bean
// public MemberRepository memberRepository() {
//interface는 new가 안되므로 구현체를 return 해준다.
// return new MemoryMemberRepository();
// return new JdbcMemberRepository(dataSource);
// return new JdbcTemplateMemberRepository(dataSource);
// return new JpaMemberRepository(em);
// }
}
- 테스트 결과
- 스프링 데이터 JPA가 `SpringDataJpaMemberRepository`를 스프링 빈으로 자동 등록해준다.
2. 스프링 데이터 JPA 제공 기능
- 인터페이스를 통한 기본적인 CRUD
- `findByName()`, `findByEmail()`처럼 메서드 이름 만으로 조회 기능 제공
- 페이징 기능 자동 제공
반응형
'인프런 > 스프링 입문 (김영한)' 카테고리의 다른 글
[VII. AOP] 25. AOP 적용 (0) | 2022.01.13 |
---|---|
[VII. AOP] 24. AOP가 필요한 상황 (0) | 2022.01.13 |
[VI. 스프링 DB 접근 기술] 22. JPA (0) | 2022.01.13 |
[VI. 스프링 DB 접근 기술] 21. 스프링 JdbcTemplate (0) | 2022.01.10 |
[VI. 스프링 DB 접근 기술] 20. 스프링 통합 테스트 (0) | 2022.01.10 |