인터페이스 만으로 DB를 연계함
인터페이스 만으로 기본적인 CRUD를 제공함
findByName(), findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공
페이징 기능 자동 제공
- 실무에서는 jpa와 spring data jpa를 기본으로 사용
☞ 복잡한 쿼리는 Querydsl 이라는 라이브러리를 사용
→ Duerydsl을 사용하면 쿼리도 자바코드로 안전하게 작성 가능하고 동적 쿼리도 편리하게 작성
이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, jdbcTemplate를 사용
@Configuration 설정
@Configuration
public class SpringConfig {
// private final EntityManager em;
// @Autowired
// public SpringConfig(EntityManager em) {
// this.em = em;
// }
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}
// @Bean
// public MemberRepository memberRepository(){
//// return new MemoryMemberRepository();
//// return new JdbcMemberRepository(dataSource);
//// return new JdbcTemplateMemberRepository(dataSource);
// return new JpaMemberRepository(em);
// }
}
interface SpringDataJpaMemberRepository 생성
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
// JPQL => slect m from Member m where m.name = ?
// 여기서 name은 findBy***의 뒤에 이름을 보고 Data Jpa에서 추론해서 적용함
// findByNameAndId(String name, Long, id)
@Override
Optional<Member> findByName(String name);
}
'Spring > spring_old' 카테고리의 다른 글
| 09./ Spring Web MVC-Aop (0) | 2023.01.15 |
|---|---|
| 02./ Spring folder 구조 (0) | 2023.01.14 |
| 07./ Spring Web MVC-DB연계-JPA (0) | 2023.01.13 |
| 07./ Spring Web MVC-DB연계-jdbc template (0) | 2023.01.13 |
| 07./ Spring Web MVC-DB연계 (0) | 2023.01.12 |