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

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

 

 

MemberService.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)

 

 

MemberServiceImpl.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)

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

 

ResourceNotExistException.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

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