옛날에 Enterprise java Beans 굳
EJB 지옥,,, 너무 복잡하다 테스트하기도 불편, 코드도 지저분함 예외처리도 너무 많음,, ->> POJO 로 다시 돌아갓다는..
스프링 - EJB 컨테이너 대체
하이버네이트 - EJB 엔티티빈 기술 대체 - JPA라는 새로운 표준 정의
SPRING DATA
RDB 세대에서 여러 mongodb redis 하둡 등등 등장
데이터를 저장하고 조회하는 것은 비슷함 !!
Spring Data JPA
순수 JDBC - Spring JdbcTemplate , Mybatis -Spring + JPA - Spring, Spring Data JPA, JPA
public interface MemberRepository extends JpaRepository<Member, Long> {
// 아무것도 없음.
}
JpaRepository가 기본적으로
인터페이스를 구현한 클래스 ?
-> 인터페이스를 기반으로 구현 클래스 생성 동적 프록시 기술로 자동으로 만들어줌 ..! 개발자는 구현체를 만들지 않고 인터페이스가 만들면 됨.
Spring DATA JPA 기능
List<User> findByEmailAndEmail(String email, String name);
select m from Member m
where m.email = ?1
and m.name = ?2
진짜 편함, 비지니스 로직에 집중, 너무 복잡할 땐 SQL 사용
JPA는 제가 손으로 작성하는 코드가 줄어드는 거지 !!
기본적으로 개발 병목 개발 장애 대부분은 디비 문제!! 디비에 대해서는 굉장히 잘 알아야 함 !!!
주의 사항
Spring data jpa를 사용하려면,
JPA, 하이버네이트 이해, 데이터 베이스 설계 이해 필요
spring data jpa는 단지 사용하기 쉽게 거들뿐 !
spring data jpa를 사용하고 싶으면,
본인이 작성하는 JPQL이 어떤 쿼리로 생성될지 이해해야하고
즉시, 지연로딩 전략을 꼭 이해해야함.
영속성 컨텍스트, 변경 감지, 플러시, mappedBy, JPQL의 한계 다 이해해야함. !!
스프링 데이터 JPA 주요 기능
JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리
공통 인터페이스
쿼리 메서드 기능 - 인터페이스에 메서드만 적어두면, 메서드 이름을 분석해서 쿼리를 자동으로 만들고 실행해주는 기능 제공