도슐랭스타

ReadingRecordService 생성 본문

Spring Boot project

ReadingRecordService 생성

도도.__. 2025. 4. 11. 11:34

Controller(요청 받는 곳)와 Repository(DB와 연결되는 곳) 사이에서 실제 로직을 처리하는 역할.
ex. "책을 저장하되, 제목이 없으면 저장하지 마!" 같은 유효성 검사도 여기서 처리함.

Service를 왜 만드냐?

비즈니스 로직(Service)와 DB 로직(Repository)를 분리할 수 있음.
비즈니스 로직(Service) - 유효성 검사, 수량 확인 등
DB 로직(Repository) - DB에 저장

구조 장점  단점
Controller → Repository 빠르게 구현, 간단 로직이 섞이면 복잡해짐
Controller → Service → Repository 유지보수 좋고 재사용 가능 코드 구조가 조금 더 복잡해짐

ReadingRecordService.java

package me.dodo.readingnotes.service;

import me.dodo.readingnotes.domain.ReadingRecord;
import me.dodo.readingnotes.repository.ReadingRecordRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ReadingRecordService {

    private final ReadingRecordRepository repository;

    @Autowired
    public ReadingRecordService(ReadingRecordRepository repository) {
        this.repository = repository;
    }

    //기록 저장
    public ReadingRecord saveRecord(ReadingRecord record) {
        return repository.save(record);
    }

    //ID로 조회
    public ReadingRecord getRecord(long id) {
        return repository.findById(id).orElse(null);
    }

    //전체 조회
    public List<ReadingRecord> getAllRecords() {
        return repository.findAll();
    }

    //삭제
    public void deleteRecord(long id) {
        repository.deleteById(id);
    }
}

여기서 사용하는 어노테이션

@Service - 이 클래스는 Service 역할임을 Spring에게 알림.
@Autowired - Repository를 자동으로 주입해 줌.

final - "한 번만 값이 설정되고, 그 이후에는 바꿀 수 없다"는 뜻

반응형

'Spring Boot project' 카테고리의 다른 글

DTO 클래스 생성 Request, Response  (1) 2025.04.13
ReadingRecordController 생성, get/post Test  (1) 2025.04.12
ReadingRecordRepository 생성  (0) 2025.04.10
ReadingRecord 엔티티 생성  (0) 2025.04.09
환경설정  (0) 2025.04.09
Comments