Repository는 Entity에 의해 생성된 DB 테이블에 접근하는 인터페이스로, 챌린지 조건에 맞게 JPA 기술을 사용하기 위해서 JpaRepository를 상속받아서 구현했다.
Spring boot JPA에서 기본적으로 제공해주는 메소드 외에 필요한 메소드들을 추가로 구현했다.
가장 주 엔티티인 Member와 Product만 첨부하였다.
(1) Member
package com.project.karrot.repository;
import com.project.karrot.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Optional;
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query( "select m from Member m where m.name = :name" )
Optional<Member> findByName(@Param("name") String name);
@Query( "select m from Member m where m.nickName = :nickName")
Optional<Member> findByNickName(@Param("nickName") String nickName);
@Query( "select m from Member m where m.email = :email")
Optional<Member> findByEmail(@Param("email") String email);
}
(2) Product
package com.project.karrot.repository;
import com.project.karrot.domain.*;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public interface ProductRepository extends JpaRepository<Product, Long> {
@Query(" select p from Product p where p.location = :location")
Optional<List<Product>> findByLocation(@Param("location")Location location);
@Query(" select p from Product p where p.location = :location and p.category = :category")
Optional<List<Product>> findByLocationAndCategory(@Param("location") Location location, @Param("category") Category category); // 지역별 및 카테고리별 상품 조회
@Query(" select p from Product p where p.member = :member")
Optional<List<Product>> findByMember(@Param("member") Member member); // 회원 등록 상품 전체 조회
@Query(" select p from Product p where p.member = :member and p.productStatus = :status")
Optional<List<Product>> findByMemberAndStatus(@Param("member") Member member, @Param("status") ProductStatus status); // 회원별 진행단계별 조회
}
'개인 프로젝트' 카테고리의 다른 글
3 - (4). 주요 코드 - Controller (0) | 2022.01.23 |
---|---|
3 - (3). 주요 코드 - Service (0) | 2022.01.23 |
3 - (1). 주요 코드 - 엔티티 (0) | 2022.01.23 |
2. ER Diagram (0) | 2022.01.23 |
1. 서론 - 시작 계기, 진행 방향 (0) | 2022.01.23 |