1. 컨트롤러 (Controller)
역할:
- 요청 처리: 사용자로부터 들어오는 HTTP 요청을 처리합니다.
- 뷰로 전달: 처리된 결과를 뷰에 전달하여 사용자에게 응답을 보냅니다.
- URL 매핑: URL 경로를 메서드와 매핑하여 특정 요청을 특정 메서드가 처리하도록 합니다.
@RestController
@RequestMapping("/api")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
- 컨트롤러는 비즈니스 로직을 직접 포함하지 않으며, 요청을 서비스 레이어로 전달하여 처리합니다.
2. 서비스 (Service)
역할:
- 비즈니스 로직 처리: 애플리케이션의 주요 비즈니스 로직을 처리합니다.
- 데이터 조작: 레포지토리와 상호작용하여 데이터베이스의 데이터를 가져오고, 조작합니다.
- 트랜잭션 관리: 하나의 비즈니스 작업 단위를 관리합니다.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User createUser(User user) {
return userRepository.save(user);
}
}
- 서비스는 비즈니스 로직을 포함하며, 여러 레포지토리를 사용할 수 있습니다. 서비스는 컨트롤러와 레포지토리 사이의 중간다리 역할을 합니다.
3. 레포지토리 (Repository)
역할:
- 데이터 접근: 데이터베이스에 접근하여 데이터를 저장, 조회, 수정, 삭제합니다.
- CRUD 작업: 기본적인 CRUD (Create, Read, Update, Delete) 작업을 처리합니다.
- 데이터베이스 연동: JPA, Hibernate 등을 사용하여 데이터베이스와 상호작용합니다.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 기본 CRUD 메서드는 JpaRepository에서 제공
// 추가적인 커스텀 쿼리 메서드도 정의 가능
}
- 레포지토리는 데이터 저장소와의 상호작용을 담당하며, 비즈니스 로직은 포함하지 않습니다. 단순히 데이터를 저장하고 검색하는 역할을 합니다.
정리
- 컨트롤러: 사용자 요청을 받아 서비스 레이어에 전달하고, 결과를 사용자에게 반환합니다.
- 서비스: 비즈니스 로직을 처리하며, 여러 레포지토리를 사용하여 데이터를 조작합니다.
- 레포지토리: 데이터베이스와 상호작용하여 데이터를 저장, 조회, 수정, 삭제하는 역할을 합니다.
이 세 가지 컴포넌트는 각각의 책임을 명확히 분리하여 코드의 가독성, 유지보수성, 재사용성을 높입니다.
'Backend Programming' 카테고리의 다른 글
스프링 빈과 애플리케이션 컨텍스트 그리고 AOP?? (0) | 2024.06.29 |
---|---|
MVC 패턴이란 무엇일까? (0) | 2024.06.28 |
JDBC, JPA가 무엇이냐? (0) | 2024.06.26 |
데이터 베이스 테이블? (0) | 2024.06.26 |
웹 서버와 웹 애플리케이션 서버 (0) | 2024.06.25 |