본문 바로가기

Spring/JPA

JPA 기반 프로젝트

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