1. Service 만들기
MemoService 클래스 만들기
- service 패키지 생성 (com.review.review03 -> service)
- MemoService 클래스 생성 (service -> MemoService.java)
1) @RequiredArgsConstructor: 반드시 필요한 생성자가 있으면 스프링에서 알아서 생성하도록 권한을 주는 것 (반드시 필요한 것에 final을 붙임)
2) @Service: 클래스가 서비스임을 명시
3) @Transactional: DB에 SQL 쿼리가 일어나야 함을 알림
- MemoService 클래스 update 메소드 생성
1) 매개변수 (Long id: 필요한 정보 찾음, MemoRequestDto requestDto: 변경시킬 정보)
2) MemoService 클래스 안에 private MemoRepository memoRepository: Repository 사용하기 위해서 선언
3) memoRepository.findById(id).orElseThrow: ID 찾아서 메모 객체 생성
4) memo.update(requestDto): requestDto 업데이트
5) return memo.getId(): ID 반환
6) Memo 클래스 update 메소드 생성
7) private final MemoRepository memoRepository: final 추가하여 service 사용 시 꼭 필요하다고 선언
8) @RequiredArgsConstructor: 반드시 필요한 생성자가 있으면 스프링에서 알아서 생성하도록 권한을 주는것, Repository 꼭 필요하다고 선언, 반드시 필요한 것에 final을 붙임
9) @Service: 서비스임을 알려줌
10) @Transactional: DB에 반영이 되야함을 알림
package com.review.review03.service;
import com.review.review03.domain.Memo;
import com.review.review03.domain.MemoRepository;
import com.review.review03.domain.MemoRequestDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@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();
}
}
package com.review.review03.domain;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@NoArgsConstructor
@Getter
@Entity
public class Memo extends Timestamped {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String contents;
public Memo(String username, String contents) {
this.username = username;
this.contents = contents;
}
public Memo(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
public void update(MemoRequestDto requestDto) {
this.username = requestDto.getUsername();
this.contents = requestDto.getContents();
}
}