본문 바로가기
내마음대로만들어보자/JAVA & Spring

타임라인 프로젝트 만들기 - Service

by 소농민! 2021. 6. 27.
728x90

1. MemoService 클래스 만들기

src > main > java > com.sparta.week03 에 service 패키지를 만듭니다.

해당 패키지 아래에 MemoService.java 파일을 만듭니다.

※ 메소드를 만드는 형식

Public 반환타입 메소드이름(재료) {

}

 

→ update 메소드를 만들려고할떄, 알아야되는 내용은 업데이트되는 메모의 id , 업데이트 내용이다.

    Long id, MemoRequestDto(정보를 물고다니는녀석) requestDto(변수명) 으로 재료를 작성해준다.

 

* 코드 작성 순서

1. 업데이트가 필요한녀석을 찾는다.

2. 찾은 녀석을 업데이트 해준다.

 

필요한 녀석을 찾으려면 find를 사용해야되고 그렇기위해서는 Repository가 필요하다.

→ private final MemoRepository memoRepository

 # 주의사항 : MemoRepository를 final 없이 그냥 둘 경우 스프링이 MemoService에 적절하게 넣어주질 못한다. 

                     꼭 필요하다고 final 이라고 선언을 해줘야 한다. 

또한, final로 선언했을때는 @RequiredArgsConstructor 임포트 해줘야한다.  (final로 선언된 녀석이 있으면 같이 생성할때 같이 넣어달라고 알려주는거다.)

마지막으로! 스프링한테 이녀석이 서비스인것도 알려줘야한다. @Service  

 

내가 선언한 업데이트 메소드 밖에서 MemoRepository를 선언하고 그걸 가져와서 Find를 통해 id 를 찾는다.

Memo memo = memoRepository.findById(id).orElseThrow(

           () -> new IllegalArgumentException("아이디가 존재하지 않습니다.")

);

 

무언가를 찾을때는 항상 찾는정보가 없을때에 어떻게할건지 코드를 작성해줘야한다!! 위와 같은형식으로 항상 작성이 되므로 알고넘어가자.

- orElseThrow : 만약에 없으면 뭔가 오류를 발생시키라고 서버에 알려주는거다.

- NullPointException : 가르키는 대상이 없다.

- lllegalArgumentException : 파라미터 대상이 이상하다.

 

마지막으로 주의할점으로는 

@Transactional : 업데이트할때 DB에 꼭 반영되어야한다고 한번더 선언을 해줘야한다. 

2. update 기능 만들기 (Memo.java  update 메소드 추가하기)

※ 코드 설명

public void : return 되는 타입이 없음을 나타낸다.