Spring Data JPA
-
#Spring Data JPA - 5 쿼리메소드 - 반환타입Spring Data JPA 2021. 3. 23. 16:03
반환 타입 스프링 데이터 JPA는 유연한 반환 타입 지원 List findByUsername(String name); //컬렉션 Member findByUsername(String name); //단건 Optional findByUsername(String name); //단건 Optional 스프링 데이터 JPA 공식 문서: https://docs.spring.io/spring-data/jpa/docs/current/reference/ html/#repository-query-return-types Index of /spring-data/jpa/docs/current/reference docs.spring.io 조회 결과가 많거나 없으면? · 컬렉션 · 결과 없음: 빈 컬렉션 반환 · 단건 조회 · 결..
-
#Spring Data JPA - 4 쿼리 메소드 -파라미터 바인딩Spring Data JPA 2021. 3. 23. 16:03
파라미터 바인딩 · 위치 기반(사용 X) · 이름 기반(사용 O) select m from Member m where m.username = ?0 //위치 기반 select m from Member m where m.username = :name //이름 기반 파라미터 바인딩 import org.springframework.data.repository.query.Param public interface MemberRepository extends JpaRepository { @Query("select m from Member m where m.username = :name") Member findMembers(@Param("name") String username); } 참고: 코드 가독성과 유지보수를 ..
-
#Spring Data JPA - 3 쿼리 메소드 기능Spring Data JPA 2021. 3. 23. 16:01
쿼리 메소드 기능 package study.datajpa.repository; import org.springframework.data.jpa.repository.JpaRepository; import study.datajpa.entity.Member; import java.util.List; public interface MemberRepository extends JpaRepository { //JpaRepository List findByUsername(String username); //username같은것은 공통으로 하기 애매해서 안만들어져 있다. //impl로 상속받아 구현할려고하면 interface라서 나머지도 다 구현해야한다고 나온다. //그럼 어떻게 findByUsername을 해결해야할..
-
#Spring Data JPA - 2 공통 인터페이스Spring Data JPA 2021. 3. 23. 11:41
공통 인터페이스 기능 · 순수 JPA 기반 리포지토리 만들기 · 스프링 데이터 JPA 공통 인터페이스 소개 · 스프링 데이터 JPA 공통 인터페이스 활용 · 순수 JPA 기반 리포지토리 만들기 · 순수한 JPA 기반 리포지토리를 만들자 · 기본 CRUD · 저장 · 변경 → 변경감지 사용 · 삭제 · 전체 조회 · 단건 조회 · 카운트 참고: JPA에서 수정은 변경감지 기능을 사용하면 된다. 트랜잭션 안에서 엔티티를 조회한 다음에 데이터를 변경하면, 트랜잭션 종료 시점에 변경감지 기능이 작동해서 변경된 엔티티를 감지하고 UPDATE SQL을 실행한다. 공통 인터페이스 설정 JavaConfig 설정- 스프링 부트 사용시 생략 가능 @Configuration @EnableJpaRepositories(base..
-
#Spring Data JPA - 1 프로젝트 생성Spring Data JPA 2021. 3. 12. 17:01
프로젝트 생성 ·스프링 부트 스타터(https://start.spring.io/) ·사용 기능: web, jpa, h2, lombok · SpringBootVersion: 2.2.1 · groupId: study · artifactId: data-jpa Gradle 전체 설정 plugins { id ‘org.springframework.boot’ version ‘2.2.1.RELEASE’ id ‘io.spring.dependency-management’ version ‘1.0.8.RELEASE’ id ‘java’ } group = ‘study’ version = ‘0.0.1-SNAPSHOT’ sourceCompatibility = ‘1.8’ configurations { compileOnly { exte..