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

+ Recent posts