본문 바로가기

Spring/Spring Data JPA5

[Spring Data JPA] 5. 스프링 데이터 JPA 분석 스프링 데이터 JPA 분석 1. 스프링 데이터 JPA 구현체 분석 2. 새로운 엔티티를 구별하는 방법 📌 스프링 데이터 JPA 구현체 분석 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 org.springframework.data.jpa.repository.support.SimpleJpaRepository SimpleJpaRepository @Repository @Transactional(readOnly = true) public class SimpleJpaRepository implements JpaRepositoryImplementation { //... @Transactional @Override public S save(S entity) { Assert.notNull(entity, "E.. 2023. 5. 22.
[Spring Data JPA] 4. 확장 기능 확장 기능 1. 사용자 정의 리포지토리 구현 2. Auditing 3. Web 확장 - 도메인 클래스 컨버터 4. Web 확장 - 페이징과 정렬 📌 사용자 정의 리포지토리 구현 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동으로 생성한다. 스프링 데이터 JPA는 인터페이스로 되어있기 때문에 상속받아 구현을 하게 되면 모든 기능을 다 구현해야 한다. → 현실적으로 불가능 특정 기능에 JPA가 아닌 다른 데이터베이스 커넥션 방법을 사용할 수 있게 사용자 정의 리포지토리 기능을 JPA가 제공한다. JPA 직접 사용(EntityManager) 스프링 JDBC Template 사용 Mybatis 사용 QueryDSL 사용 데이터베이스 커넥션 직접 사용 등... 사용자 정의 인터페이스.. 2023. 5. 22.
[Spring Data JPA] 3. 쿼리 메소드 기능 쿼리 메서드 기능 메서드 이름으로 쿼리 생성 JPA NamedQuery @Query, 리포지토리 메서드에 쿼리 정의하기 @Query, 값, DTO 조회하기 파라미터 바인딩 반환 타입 순수 JPA 페이징과 정렬 스프링 데이터 JPA 페이징과 정렬 @EntityGraph JPA Hint & Lock 📌 메서드 이름으로 쿼리 생성 : 메서드 이름을 분석해서 JPQL 쿼리 실행 이름과 나이를 기준으로 회원을 조회하는 간단한 예제를 보자 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThen(String username, int age) { return em.createQuery( "select m" + " from Member m" + " where m.userna.. 2023. 5. 19.
[Spring Data JPA] 2. 공통 인터페이스 기능 공통 인터페이스 기능 순수 JPA 리포지토리 만들기 공통 인터페이스 설정 공통 인터페이스 적용 공통 인터페이스 분석 📌 순수 JPA 기반 리포지토리 만들기 기본 CRUD 기능을 구현한다. Member 엔티티의 CRUD는 MemberJpaRepository 클래스, Team 엔티티의 CRUD는 TeamJpaRepository 클래스에 구현. 1. Create(저장) Member 저장 public Member save(Member member) { em.persist(member); return member; } Team 저장 public Team save(Team team){ em.persist(team); return team; } 2. Read(조회) Member 조회 public List findAl.. 2023. 5. 17.