Spring MVC — 읽기 자료
컨트롤러에 SQL 을 직접 쓰면 안 되는 이유 — 책임 분리.
주문(Controller 호출)을 받아 실제 요리(비즈니스 로직)를 책임지는 계층. 트랜잭션도 여기.
@Service
public class BoardService {
@Autowired
private BoardMapper mapper; // DAO 주입
@Transactional
public void writeWithFile(Board b, MultipartFile file) {
mapper.insert(b); // 글 저장
fileService.save(file); // 파일 저장
// 둘 중 하나 실패하면 롤백
}
}
컨트롤러에 SQL 을 직접 쓰면 안 되는 이유 — 책임 분리.
비즈니스 로직이 어느 계층에 살아야 하는지 안다.