Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring Boot] 서비스(Service)와 에러처리 본문
서비스
❓서비스가 왜 필요할까?
: 서비스 없이, 컨트롤러에서 데이터 처리를 구현하면,
해당 기능이 필요한 모든 컨트롤러가 동일한 기능을 중복으로 구현해야한다
: 엔티티 클래스는 데이터베이스와 직접 맞닿아 있는 클래스이기 때문에
엔티티 클래스를 직접 사용하면, 테이블 컬럼이 변경될 수 있으니
DTO (Data Transfer Object) 클래스를 쓴다.
엔티티 객체를 DTO 객체로 변환하는 일은 서비스에서 처리한다.
[QuestionService.java]
public class QuestionService {
private final QuestionRepository questionRepository;
public Question getQuestion(Integer id) {
Optional<Question> oq = this.questionRepository.findById(id);
if(oq.isPresent()) {
return oq.get();
}
throw new DataNotFoundException("question not found");
}
}
[DataNotFoundException.java]
public class DataNotFoundException extends RuntimeException {
public DataNotFoundException(String message) {
super(message);
}
}
[QuestionController.java]
public class QuestionController {
private final QuestionService questionService;
@RequestMapping("/question/detail/{id}")
public String detail(Model model, @PathVariable("id") Integer id) {
Question question = this.questionService.getQuestion(id);
model.addAttribute("question", question);
return "question_detail";
}
}
🕹️ Controller -> Service -> Repository
'Backend > 스프링부트' 카테고리의 다른 글
[Spring Boot] QueryDSL, Q클래스 (0) | 2022.12.04 |
---|---|
[Spring Boot] 폼과 폼 Validation (0) | 2022.11.28 |
[Spring Boot] File 객체와 MultipartFile 인터페이스 (0) | 2022.11.26 |
[Spring Boot] 기본세팅 (0) | 2022.11.26 |
[Spring Boot] 쿠키(Cookie)와 세션(Session), CSRF (0) | 2022.11.26 |
Comments