728x90
클래스, 인터페이스 구조
최종 사용하는 레포지토리 (MemberDataRepository)
import java.util.Optional;
@EnableJpaRepositories
/**
* 실제 사용하는 리포지토리
* 단순한 CRUD 쿼리는 여기서 작성
*/
public interface MemberDataRepository extends JpaRepository<Member, Long>, MemberCustomRepository {
Member findMemberByEmail(String email);
}
MemberCustomRepository
import java.util.List;
@Repository
//커스텀 인터페이스 쿼리 작성
public interface MemberCustomRepository {
Long editProfile(ProfileForm profileForm);
void delateRegions(Member member);
void saveMemberRegion(MemberRegion memberRegion);
}
MemberCustomRepositoryImpl (MemberCustomRepository 구현체)
@Repository
@RequiredArgsConstructor
//커스텀 인터페이스 쿼리 구현
public class MemberCustomRepositoryImpl implements MemberCustomRepository {
private final JPAQueryFactory queryFactory;
private final EntityManager em;
@Override
public Long editProfile(ProfileForm profileForm) {
return queryFactory
.update(member)
.set(member.bio, profileForm.getBio())
.set(member.onOffStatus, profileForm.getOnOffStatus())
.where(member.nickname.eq(profileForm.getNickname())).execute();
}
@Override
public void delateRegions(Member member) {
queryFactory
.delete(memberRegion)
.where(memberRegion.member.id.eq(member.getId()))
.execute();
}
//...등등
}
728x90
'백엔드 > JPA' 카테고리의 다른 글
JPA Auditing으로 생성일/수정일 자동화하기 (0) | 2021.12.29 |
---|---|
스프링 데이터 jpa 사용자 정의 ID를 사용하는경우 (0) | 2021.10.24 |
스프링 데이터 jpa Auditing (0) | 2021.10.23 |
스프링 데이터 jpa 사용자 정의 repository 구현 (0) | 2021.10.23 |
스프링 데이터 jpa 패치조인 @EntityGraph (0) | 2021.10.23 |