TIL

TIL) 스프링 프로젝트에서 책임 분산하기

tmddnr3503 2024. 11. 7. 20:27

1. 스프링 프로젝트 패키지

 스프링 프로젝트에는 여러가지 패키지가 존재하게 되는데 이번 일정 관리 과제의 패키지는 다음과 같이 존재합니다.

  • controller : 컨트롤러가 있는 패키지
  • dto : DTO가 있는 패키지
  • entity : Entity가 있는 패키지
  • repository : Repository가 있는 패키지
  • service : Service가 있는 패키지
  • handeler : Handler가 있는 패키지
  • exception : 커스텀 예외가 있는 패키지

 

2. 각 패키지에 들어가야하는 클래스 정리하기

 각 패키지에서는 패키지 명에 맞는 클래스를 포함하고, 클래스에는 알맞는 기능이 분배되어야합니다. 예시로 컨트롤러는 클라이언트의 요청을 받는 클래스가 들어가 있고, dto 패키지는 응답 받을 때 혹은 반환 할 때 필요한 정보를 저장하는 클래스를 작성해야합니다. 이때, service와 reopsitory 패키지에 포함되는 클래스와 그 클래스 내의 메소드를 분산해주는 것이 어려웠습니다. 중요하게 생각한 것은 다음과 같습니다.

  • repository 패키지(클래스)에는 db 데이터를 관리하는 것만을 구현 했습니다. 예를 들어 id를 통해 조회를 할 때, id가 잘못되었다면 예외를 출력해주는 것이아닌 잘못된 id로 조회하여 빈 결과를 service로 전달해 줍니다.
  • service 패키지(클래스)는 repository에서 반환 받은 결과를 바탕으로 예외처리와 controller에서 받은 값과의 비교를 진행해 줍니다. 이때, @Transactional을 이용해 데이터 병목을 방지할 수 있습니다.

위와 같이 dto, controller, repository, service 패키지(클래스)를 구상할 수 있습니다. entity와 exception에는 저장하는객체가 들어가는 entity와 커스텀 예외가 있는 exception이 있습니다. 마지막으로 handeler에는 ExceptionHandler를 구현하여 예외처리를 하는 클래스를 구현하였습니다. 

 

3. 앞으로 해야할 일

  • 과제 피드백 받기
  • JDBC를 기반으로 JPA 공부하기

 

  •