서비스와 리포지토리 계층 책임의 차이점
서비스 계층과 리포지토리 계층의 주요 차이점은 다음과 같은 책임입니다.
- 서비스 레이어
- 비즈니스 로직을 구현
- 리포지토리 레이어와 상호 작용하여 데이터를 검색 및 저장
- 트랜잭션을 관리
- 리포지토리 레이어
- 데이터 액세스 및 저장
- 엔터티에 대한 CRUD 작업을 수행
데이터베이스와 상호 작용
서비스 계층은 비즈니스 규칙 및 작업 실행에 중점을 두는 반면 리포지토리 계층은 데이터 지속성과 관련됩니다.
1 단계: 컨트롤러 계층에서 요청 받기
먼저 서비스 계층은 컨트롤러 계층에서 요청을 받습니다.
요청에는 컨트롤러가 클라이언트로부터 수신하고 검증한 데이터가 포함될 수 있습니다.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(User user) {
return userRepository.save(user);
}
}
2 단계: 비즈니스 로직 실행
서비스 계층은 애플리케이션의 대부분의 비즈니스 로직이 구현되는 곳입니다.
여기에는 계산, 데이터 변환 또는 비즈니스 규칙 적용과 같은 다양한 작업이 포함될 수 있습니다.
public User createUser(User user) {
user.setJoiningDate(LocalDate.now());
if (user.getAge() < 18) {
throw new IllegalArgumentException("User must be at least 18 years old.");
}
return userRepository.save(user);
}
3 단계: 리포지토리 레이어와 상호 작용
비즈니스 로직을 실행한 후 서비스 계층은 종종 리포지토리 계층과 상호 작용하여 데이터베이스의 데이터를 검색하거나 업데이트합니다.
여기에는 엔터티를 저장하고, 속성으로 엔터티를 찾고, 엔터티를 삭제하기 위해 리포지토리에서 제공하는 메서드를 호출하는 것이 포함될 수 있습니다.
public User createUser(User user) {
if (userRepository.existsByEmail(user.getEmail())) {
throw new IllegalArgumentException("Email already in use.");
}
return userRepository.save(user);
}
4 단계: 컨트롤러 계층에 결과 반환
마지막으로 서비스 계층은 작업 결과를 컨트롤러 계층으로 다시 반환합니다. 이 결과는 컨트롤러가 클라이언트에 다시 보내는 HTTP 응답에 포함될 수 있습니다.
public User createUser(User user) {
// …
return userRepository.save(user);
}
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
@Transactional (0) | 2023.07.18 |
---|---|
ACID (0) | 2023.07.18 |
Controller의 책임 (0) | 2023.07.18 |
Custom Exception (0) | 2023.07.18 |
Body에 상태 코드를 넣는 이유 (0) | 2023.07.18 |