도슐랭스타
ReadingRecordService 생성 본문
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