😌2023.01.20

일일 회고 156일차

할일 및 한일

경험 및 배움

스프링 부트 & JPA 강의 학습 및 정리

오늘은 주문 도메인을 개발해보았다.

주문과 주문 상품 엔티티, 주문 리포지토리 및 서비스, 또한 검색 기능을 개발해보았다.

우선, 지금까지 프로젝트를 하거나 학습할 때는 대부분 서비스 계층에서 비즈니스 로직을 처리하였다. 하지만, 이번 JPA 강의에서는 엔티티에서 대부분의 비즈니스 메서드를 작성하였다.

엔티티가 비즈니스 로직을 가지고 객체 지향의 특성을 적극 활용하는 것을 도메인 모델 패턴이라고 하고, 반대로 엔티티에는 비즈니스 로직이 거의 없고 서비스 계층에서 대부분의 비즈니스 로직을 처리하는 것을 트랜잭션 스크립트 패턴이라고 한다고 한다.

또한, JPA는 protected 가 붙으면 개발자에게 임의로 하지말라는 뜻을 가진 관례라고 한다.

따라서, @NoArgsConstructor(access = AccessLevel.PROTECTED) 어노테이션을 클래스 레벨에 붙이면 기본 생성자에 protected 를 붙인 것과 동일하므로, 지정된 생성 메서드 로직 이외에는 사용하지 말라는 뜻을 담고 있다고 한다.

마지막으로, 동적 쿼리를 JPA에서 구현할 때는 JPQL로 처리하는 법, JPA criteria로 처리하는 법들이 존재한다.

하지만 너무 복잡하고 가독성도 좋지 않아, 현업에서는 사용하지 않는다고 한다.

대신, querydsl을 사용하는데, 그건 나중에 학습해봐야겠다.

나머지 자세한 학습 내용은 다음과 같다.

개선 및 목표

  • 내일은 명절을 맞아 큰 집에 가는 날이다.

  • 틈틈히 개인 공부를 진행해보자.

Last updated