Spring(기초)-3주차-2-Service

Jonguk Kim·2021년 11월 16일
0

Spring

목록 보기
5/16

1. Service 만들기

MemoService 클래스 만들기

  • 업데이트
  1. service 패키지 생성 (com.review.review03 -> service)
  2. MemoService 클래스 생성 (service -> MemoService.java)
    1) @RequiredArgsConstructor: 반드시 필요한 생성자가 있으면 스프링에서 알아서 생성하도록 권한을 주는 것 (반드시 필요한 것에 final을 붙임)
    2) @Service: 클래스가 서비스임을 명시
    3) @Transactional: DB에 SQL 쿼리가 일어나야 함을 알림
  3. 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();
    }
    // update 메소드 추가
    public void update(MemoRequestDto requestDto) {
        this.username = requestDto.getUsername();
        this.contents = requestDto.getContents();
    }
}
profile
개발일지

0개의 댓글