study/spring | java

[Timeline Service] 타임라인 서비스 만들기 2. Service

_드레 2021. 6. 5. 13:31

src > main > java 안에 service package 생성

 

[MemoService.java 클래스]

반환타입 : Long | 메소드 : update | 재료 : id, Dto

 

멤버변수 선언 : private MemoRepository memoRepository

(꼭 필요한 변수라고 알려주기 : private final  MemoRepository memoRepository)

* annotation :

    @RequiredArgsConstructor 추가 (생성자, final로 생성된 친구 있으면 생성할때 같이 무조건 넣어준다~)

    @Service (서비스라는것도 스프링한테 알려주기)

    @Transactional (DB에 진짜 반영돼야한다고 스프링한테 알려주기)

 

위 변수를 가져와서 id를 기준으로 find 

memoRepository.findById(id) → 근데 이게 없으면 어떻게 할 지 spring한테 알려줘야 함.

orElseThrow ( ( ) -> new IllegalArgumentException or NullPointerException("예외메세지") )

@RequiredArgsConstructor
@Service
public class MemoService {

    private final MemoRepository memoRepository;

    @Transactional
    public Long update(Long id, MemoRequestDto requestDto) {
        Memo memo = memoRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("아이디가 존재하지 않습니다.")
        );
        memo.update(requestDto);
        return memo.getId();
    }
}

requestDto를 들고 update. 어떤 친구가 update되었는지 id를 돌려줌 (return memo.getId();)

 

[Memo.java 클래스] - update 메소드 추가

    public void update(MemoRequestDto requestDto) {
        this.username = requestDto.getUsername();
        this.contents = requestDto.getContents();
    }

메소드 public 반환타입은 void (없음) 

update (전달받는 input : MempRequestDto의 requestDto)

username = requestDto의 getUsername