spring jpa data

MinSeong Kang·2022년 7월 25일
0

spring

목록 보기
10/18

옛날에 Enterprise java Beans 굳

EJB 지옥,,, 너무 복잡하다 테스트하기도 불편, 코드도 지저분함 예외처리도 너무 많음,, ->> POJO 로 다시 돌아갓다는..

스프링 - EJB 컨테이너 대체
하이버네이트 - EJB 엔티티빈 기술 대체 - JPA라는 새로운 표준 정의

SPRING DATA
RDB 세대에서 여러 mongodb redis 하둡 등등 등장
데이터를 저장하고 조회하는 것은 비슷함 !!

  • CRUD + 쿼리
  • 동일한 인터페이스
  • 페이징 처리
  • 메서드 이름으로 쿼리 생성
  • 스프링 MVC 에서 id 값만 넘겨도 도메인 클래스로 바인딩

Spring Data JPA

순수 JDBC - Spring JdbcTemplate , Mybatis -Spring + JPA - Spring, Spring Data JPA, JPA

public interface MemberRepository extends JpaRepository<Member, Long> {
	// 아무것도 없음.
}

JpaRepository가 기본적으로

  • <S extends T> S save(S entity)
  • void delete(ID id)
  • Optional<T> findById(ID id)
  • Iterable<T> findAll()
  • long count()
  • 기타 등등...

인터페이스를 구현한 클래스 ?
-> 인터페이스를 기반으로 구현 클래스 생성 동적 프록시 기술로 자동으로 만들어줌 ..! 개발자는 구현체를 만들지 않고 인터페이스가 만들면 됨.

Spring DATA JPA 기능

  • 메서드 이름으로 쿼리 생성
List<User> findByEmailAndEmail(String email, String name);
select m from Member m
where m.email = ?1
	and m.name = ?2
  • @Query : JPA 네이티브 쿼리 지원
  • @Modifying ...

  • 장점
    코딩량이 적어진다.
    엔티티를 사용하기 때문에 도메인 클래스를 중요하게 다룸
    비지니스 로직 이해 쉬움
    더 많은 테스트 케이스 작성 가능

진짜 편함, 비지니스 로직에 집중, 너무 복잡할 땐 SQL 사용

JPA는 제가 손으로 작성하는 코드가 줄어드는 거지 !!
기본적으로 개발 병목 개발 장애 대부분은 디비 문제!! 디비에 대해서는 굉장히 잘 알아야 함 !!!

주의 사항
Spring data jpa를 사용하려면,
JPA, 하이버네이트 이해, 데이터 베이스 설계 이해 필요
spring data jpa는 단지 사용하기 쉽게 거들뿐 !

spring data jpa를 사용하고 싶으면,
본인이 작성하는 JPQL이 어떤 쿼리로 생성될지 이해해야하고
즉시, 지연로딩 전략을 꼭 이해해야함.
영속성 컨텍스트, 변경 감지, 플러시, mappedBy, JPQL의 한계 다 이해해야함. !!

스프링 데이터 JPA 주요 기능
JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리

공통 인터페이스
쿼리 메서드 기능 - 인터페이스에 메서드만 적어두면, 메서드 이름을 분석해서 쿼리를 자동으로 만들고 실행해주는 기능 제공

0개의 댓글