본문 바로가기

Spring30

[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.
[Spring Data JPA] 1. 예제 도메인 모델 예제 도메인 모델 1. 예제 도메인 모델과 동작확인 📌 예제 도메인 모델과 동작확인 Member와 Team 엔티티를 구현하고 연관관계를 테스트한다. 엔티티 클래스 Member 입장에서 다 수의 회원은 하나의 팀에 소속될 수 있다. → 다(N) 대 일(1) 관계 Team 입장에서 하나의 팀에는 다 수의 회원이 소속될 수 있다. → 일(1) 대 다(N) 관계 ERD 외래키(FK)는 Member가 갖는다. Member 엔티티 @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(exclude = "team") public class Member { @Id @GeneratedValue @Column(name = ".. 2023. 5. 17.