Controller, Service, Repository의 쓰임법과 주의점

최태민·2023년 9월 3일
0

🚀공부노트

목록 보기
4/6

🚩클린코드의 위한 주의사항

  • 함수는 한가지 일만 수행하는 것이 좋다
  • 클래스는 작고 하나의 책임을 가지는것이 좋다(검증과 DTO클래스를 재사용보다 새로 생성!)

Entity

  • 저장되고 관리되어야 하는 데이터테이블의 뼈대
  • ⚠️데이터를 사용할 경우 엔디티를 사용금지 보안상으로 문제가 발생함으로 새로운 DTO를 만들어 사용해야함
    • 모든 연관관계는 지연로딩으로 설정(laze의 주의점)
      • 즉시로딩( EAGER )은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다.
      • 실무에서 모든 연관관계는 지연로딩( LAZY )으로 설정해야 한다
      • @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다(디폴트가 EAGER이기때문에 N+1문제가 발생할 확률이 높다)
      • OneToMany의 디폴트는 laze이다

Controller

  • 파라미터 혹은 body로 받은 데이터를 객체로 만들어주기
  • 사용자의 Request를 전달받아 요청의 처리를 담당하는 Service를 호출한다

Service

  • 알맞은 정보를 가공하는 과정으로 'Controller에 의해 호출되어 비즈니스 로직과 트랜잭션을 수행한다.'
  • @Transactional(readOnly = true) 읽기 전용!(디폴트는 false)

Repository

  • SQL를 사용해 DB와의 통신 담당

❗의존관계

  • Controller->Service->Repository 순으로 한방향으로 의존해야한다!
  • 순서의 관계도를 따라 의존

참고자료 : 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!


profile
백엔드 개발자 꿈나무

0개의 댓글