JPA 기반 프로젝트
Spring Data JPA
스프링 데이터 JPA 적용 전
반복되는 CRUD
public class MemberRepository{
public void save(Member member) {...}
public Member findOne(Long id) {...}
public List<Member> findAll() {...}
public Member findByUsername(String username) {...}
}
public class ItemRepository{
public void save(Item item) {...}
public Member findOne(Long id) {...}
public List<Member> findAll() {...}
}
CRUD하는 게 다~ 비슷-비슷하다.
-자동화 하고 싶어! 지루게 하게 반복되는 CRUD 문제를 세련된 방법으로 해결. -개발자는 인터페이스 만 작성하면 됨! -스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입
스프링 데이터 JPA 적용 후
public interface MemberRepository extends JpaRepository<Member, Long>{
Member findByUsername(String username);
}
public interface ItemRepository extends JpaRepository<Item, Long>{ }
스프링 데이터 JPA에서는 JpaRespository라는 인터페이스를 제공합니다. 그리고 우리가 상상할 수 있는 공통화 될 수 있는 거 다 집어 넣는다.
공통화 할 수 없는 Member findByUsername(String username); 만 쓰면 됨
스프링 데이터 JPA 적용 후 클래스 다이어그램
-JpaRepository 인터페이스 : 공통CRUD 제공 -제너릭은 <엔티티, 식별자>로 설정
public interface ItemRepository extends JpaRepository<Member Long>{}
메서드 이름으로 쿼리 설정
-메서드 이름만으로 JPQL 쿼리 생성
public interface MemberRepository extends JpaRepository<Member Long>{
List<Member> findByName(String username);
}
공통된 거 아닌 건 어떻게 하냐? 이것도 직접 SQL안 짜고 데이터 넘겨주면 쿼리 짜준다 - findByName
List<Member> member = memberRepository.findByName("hello")
→ 실행 된 SQL SELECT * FROM MEMBER M WHERE M.NAME = 'hello'
해당 포스팅은 T아카데미에서 진행한 김영한 강사님의 JPA 유튜브 강의를 듣고 정리한 것입니다 : )
https://www.youtube.com/watch?v=WfrSN9Z7MiA&list=PL9mhQYIlKEhfpMVndI23RwWTL9-VL-B7U
반응형
'Spring > JPA' 카테고리의 다른 글
JPA 객체지향쿼리 - JPQL (0) | 2021.04.12 |
---|---|
JPA 내부 구조. 영속성 컨텍스트 (0) | 2021.04.12 |
JPA 연관관계 매핑 -양방향 매핑 (0) | 2021.04.11 |
JPA 연관관계 매핑-단방향 매핑 (0) | 2021.04.11 |
JPA 필드와 칼럼 매핑 (0) | 2021.04.11 |
Uploaded by Notion2Tistory v1.1.0