주문 도메인 개발
2023. 9. 29. 00:06ㆍLECTURES/실전! 스프링 부트와 JPA 활용
주문, 주문상품 엔티티 개발
주문 리포지토리 개발
주문 서비스 개발
주문 기능 테스트
주문 검색 기능 개발
검색 조건 파라미터
검색 동적 쿼리 JPQL로 처리
- https://github.com/dpdms529/JpaShop/commit/3dafd0572363fc2f75fb5a7d6c0aef3f61d404a9
- 복잡 -> 실수로 인한 버그가 생기기 좋음
검색 동적 쿼리 JPA Criteria로 처리
- https://github.com/dpdms529/JpaShop/commit/69ee5864966dca10d6c8ef8363eebac0465c4114
- JPA 표준 스펙이지만 실무에서 사용하기에 너무 복잡
Querydsl을 사용하여 해결
public List<Order> findAll(OrderSearch orderSearch){
QOrder order = QOrder.order;
QMember member = QMember.member;
return query
.select(order)
.from(order)
.join(order.member, member)
.where(statusEq(orderSearch.getOrderStatus()),
nameLike(orderSearch.getMemberName()))
.limit(1000)
.fetch();
}
private BooleanExpression statusEq(OrderStatus statusCond){...}
private BooleanExpression nameLike(String nameCond){...}
참고
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
- 도메인 모델 패턴 : 서비스 계층은 단순히 엔티티에 필요한 요청을 위임하는 역할을 하고, 엔티티가 비즈니스 로직을 가지고 객체 지향의 특성을 적극 활용하는 것
- 트랜잭션 스크립트 패턴 : 엔티티에는 비즈니스 로직이 거의 없고, 서비스 계층에서 대부분의 비즈니스 로직을 처리하는 것ItelliJ 단축키
ctrl
+alt
+m
: 드래그한 부분 메서드로 만들어줌ctrl
+alt
+p
: 파라미터로 만들어줌
'LECTURES > 실전! 스프링 부트와 JPA 활용' 카테고리의 다른 글
API 개발 기본 / 고급 준비 (0) | 2023.09.29 |
---|---|
웹 계층 개발 (0) | 2023.09.29 |
상품 도메인 개발 (0) | 2023.09.29 |
회원 도메인 개발 (0) | 2023.09.29 |
애플리케이션 구현 준비 (0) | 2023.09.29 |