Just do IT
article thumbnail
Published 2021. 6. 16. 12:06
JPA 실습하기 (5) Programing/JPA

이번 포스팅에서는 MemberService.java, MemberServiceImpl.java 두 클래스를 작성해 보겠습니다.

 

 

1. MemberService.java -> 인터페이스

<java />
package com.example.practice.service; import java.util.List; import com.example.practice.model.Member; public interface MemberService { List<Member> findAll(); Member findBymemNum(int memNum); void deleteBymemNum(int memNum); Member save(Member member); List<Member> findBymemNumBetween(int memNum1, int memNum2); void updateBymemNum(int memNum, Member member); }

 

각각 코드에 대한 설명을 간단하게 알아보겠습니다.

 

List<Member> findAll(); - 모든 회원 정보 출력
Member findBymemNum(int memNum); - 회원고유번호로 회원찾기(select)
void deleteBymemNum(int memNum); - 회원삭제하기(탈퇴하기, delete)
Member save(Member member); - 회원가입(회원 저장하기, insert)
List<Member> findBymemNumBetween(int memNum1, int memNum2);
     - 회원 정보로 검색하기 (두 회원번호 사이의 회원 찾기/ 예: 회원번호 10-15 회원 정보 보기)
void updateBymemNum(int memNum, Member member);

     - 회원 정보 수정하기 (update)

 

 

2. MemberServiceImpl.java -> 자바 클래스

<java />
package com.example.practice.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.practice.exception.ResourceNotExistException; import com.example.practice.model.Member; import com.example.practice.repository.MemberRepository; @Service public class MemberServiceImpl implements MemberService{ @Autowired private MemberRepository memberRepository; @Override public List<Member> findAll() { List<Member> members = new ArrayList<>(); memberRepository.findAll().forEach(e -> members.add(e)); return members; } @Override public Member findBymemNum(int memNum) { Member member = memberRepository.findById(memNum).orElseThrow(() -> new ResourceNotExistException("Member", "memNum", memNum)); return member; } @Override public void deleteBymemNum(int memNum) { memberRepository.deleteById(memNum); } @Override public Member save(Member member) { memberRepository.save(member); return member; } @Override public List<Member> findBymemNumBetween(int memNum1, int memNum2) { List<Member> members = memberRepository.findBymemNumBetween(memNum1, memNum2); if(members.size() > 0) return members; else return null; } @Override public void updateBymemNum(int memNum, Member member) { //수정할 사원 정보 불러오기 Member mem = memberRepository.findById(memNum).orElseThrow(() -> new ResourceNotExistException("Member", "memNum", memNum)); mem.setMemName(member.getMemName()); mem.setMemId(member.getMemId()); memberRepository.save(member); } }

 

findAll - 회원 정보를 불러와서 각각 새로운 회원정보 리스트에 담아서 출력

findBymemNum - 회원 고유번호로 조회를 하되 존재하지 않을 경우 생기는 error에 대한 예외처리하기

                         - 예외처리 ResourceNotExistException("Member", "memNum", memNum)

                         - 예외처리 코드는 아래에 있습니다.

deleteBymemNum / save - 회원 삭제, 입력

findBymemNumBetween - 두 개의 회원 고유번호 사이의 회원들의 정보 조회

                                   - 회원이 없을 시 null값 리턴, 정보가 있을 경우 리스트 출력

updateBymemNum - 수정할 회원의 정보를 불러옵니다 (findById)

                           - 불러온 정보를 수정하여 다시 저장 (save)

                          *저는 회원 이름과 아이디를 수정하게 하였습니다.

 

3. ResourceNotExistException.java - 예외처리 코드

<java />
package com.example.practice.exception; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(value = HttpStatus.NOT_FOUND) public class ResourceNotExistException extends RuntimeException{ private String resourceName; private String fieldName; private Object fieldValue; public ResourceNotExistException(String resourceName, String fieldName, Object fieldValue) { super(String.format("%s not found with %s : '%s'", resourceName, fieldName, fieldValue)); this.resourceName = resourceName; this.fieldName = fieldName; this.fieldValue = fieldValue; } public String getResourceName() { return resourceName; } public void setResourceName(String resourceName) { this.resourceName = resourceName; } public String getFieldName() { return fieldName; } public void setFieldName(String fieldName) { this.fieldName = fieldName; } public Object getFieldValue() { return fieldValue; } public void setFieldValue(Object fieldValue) { this.fieldValue = fieldValue; } }

 

 

 

필드에 대한 getter, setter, 생성자를 생성해주시면 됩니다.

super(String.format("%s not found with %s : '%s'", 

resourceName, fieldName, fieldValue));

이 부분만 직접 추가한 부분입니다.

검색한 회원 정보가 존재하지 않을 시 띄울 메시지 입니다.

 

여기까지 작성이 완료 되셨다면 다음 포스팅 부터는 Controller를 작성하고

각각의 기능을 실행시켜보며 어떻게 출력되는지 확인해보겠습니다~^^

 

다음으로 고고 -> https://amy-ming.tistory.com/17

'Programing > JPA' 카테고리의 다른 글

JPA 실습하기 (7)  (0) 2021.06.21
JPA 실습하기 (6)  (0) 2021.06.21
JPA 실습하기 (4)  (0) 2021.06.15
JPA 실습하기 (3)  (0) 2021.06.14
JPA 실습하기 (2)  (0) 2021.06.14
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!