5. 확장 기능
·
Spring/Spring Data Jpa
1. 사용자 정의 Repository 구현 [사용자 정의 인터페이스] public interface MemberRepositoryCustom { List findMemberCustom(); } [구현 클래스] - 규칙 : 사용자 정의 인터페이스 이름 + "Impl" @RequiredArgsConstructor public class MemberRepositoryCustomImpl implements MemberRepositoryCustom { private final EntityManager em; @Override public List findMemberCustom() { return em.createQuery("select m from Member m").getResultList(); } } [사용자..
4. 쿼리 메소드 기능
·
Spring/Spring Data Jpa
Spring Data Jpa의 특징을 차례로 알아보자. 1. 메소드 이름으로 쿼리 생성 *메소드 이름 조회 : find...By + where 문에 들어갈 조건 개수 : count...By 존재 : exist...By 삭제 : delete...By DISTINCT : findDistinct LIMIT : findFirst, findFirst3, findTop, findTop3 cf. Entity 필드명이 변경되면, Spring Data Jpa 인터페이스에 정의한 메서드 이름도 변경해야 한다. 애플리케이션 로딩 시점에, 메서드를 parsing 해서 sql 쿼리문을 생성하기 때문에 필드명이 변경되면 parsing 시점에서 문법 오류를 던진다. [순수 JPA] public List findByUserNameA..
3. 공통 인터페이스 기능
·
Spring/Spring Data Jpa
순수 JPA 기반으로 CRUD가 가능한 repository를 만들면 다음과 같다. save / delete / findAll / findById / count 와 같은 기능들은 어떠한 Entity가 생성되더라도 공통적으로 요구될 수 있는 기능들이다. 이러한 기능들을 Spring에서는 Spring Data JPA 라이브러리로 공통 인터페이스를 설정한다. 이 때 T는 Entity 타입이 되고, ID은 해당 Entity의 PK 타입이 된다. public interface MemberRepository extends JpaRepository { } @Repository public class MemberJpaRepository { @PersistenceContext private EntityManager em;..
2. 예제 도메인 모델
·
Spring/Spring Data Jpa
[Member - Team 모델] [多:1 연관관계 매핑] 多 는 주테이블. 즉 연관관계의 주인으로서, 대상테이블의 키(외래키)를 가진다. @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") //FK 이름, many 쪽에서 FK를 갖는다. private Team team; 1 은 mappedBy로 연관관계의 주인을 지정하는데, 여기에서는 Member의 team 필드가 된다. @OneToMany(mappedBy = "team") //FK가 없는 쪽에 mappedBy를 거는 것이 좋다. private List members = new ArrayList(); https://wch-0625.tistory.com/24 https://wch-0625...
1. 프로젝트 환경설정
·
Spring/Spring Data Jpa
https://start.spring.io/ Project: Gradle-Groovy Language: Java Spring Boot: 3.2.3 Dependency: Spring Web, Lombok, Spring Data Jpa, H2 Database 이전 강의에서 H2 DB 버전에 맞게 Dependency를 수정해주었다. [build.gradle] runtimeOnly 'com.h2database:h2:2.2.220' - 추가로 테이블에 값을 insert 시에, 쿼리 value에 어떤 값이 들어가는지 가시화 해주는 라이브러리를 가져온다. cf. 운영 시스템에 적용할 때는 꼭 성능테스트를 하고 사용하는 것이 좋다. implementation ‘com.github.gavlyukovskiy:p6spy-s..
7. 스프링 MVC - 웹 페이지 만들기
·
Spring/MVC 1
보호되어 있는 글입니다.