Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- querydsl
- 딥러닝
- 코딩
- Python
- 실습
- tutorial
- ChatGPT
- java
- 웹개발
- Ai
- 블록체인
- 머신러닝
- OpenAI
- ORM
- 데이터 분석
- JPA
- 이더리움
- 파이썬
- 블록체인실습
- node.js
- seaborn
- 데이터 시각화
- Practice
- SpringDataJpa
- SQL
- 프로그래밍
- springboot
- 암호화폐
- 스마트컨트랙트
- 데이터베이스
Archives
- Today
- Total
집돌이 공대남 IT
JPA 프로그래밍 마스터하기: 초급부터 전문가까지 실습을 통한 학습(15) 본문
JPA 실습: 복잡한 도메인 모델과 비즈니스 로직 다루기
안녕하세요. 집돌이 공대남입니다.
이번에는 좀 더 복잡한 도메인 모델과 비즈니스 로직을 다루는 JPA 실습을 진행해 보겠습니다.
이번 실습에서는 회원, 상품, 주문 등 여러 개의 도메인을 다루며, 1:N, N:1, N:M 등 다양한 관계 매핑을 경험해볼 예정입니다. 재밌겠죠?(아닌가..)
1단계: 도메인 모델링
먼저, 회원(Member), 상품(Item), 주문(Order), 주문 상세(OrderItem) 등의 엔티티를 만들어 보겠습니다.
@Entity
public class Member {
// 기존에 작성한 코드
@OneToMany(mappedBy = "member")
private List<Order> orders = new ArrayList<>();
}
@Entity
public class Order {
@Id @GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
@OneToMany(mappedBy = "order")
private List<OrderItem> orderItems = new ArrayList<>();
// getters, setters
}
@Entity
public class OrderItem {
@Id @GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "order_id")
private Order order;
@ManyToOne
@JoinColumn(name = "item_id")
private Item item;
// getters, setters
}
2단계: 리포지토리 생성
위에서 만든 엔티티에 대한 각각의 리포지토리를 생성합니다.
public interface OrderRepository extends JpaRepository<Order, Long> {
}
public interface OrderItemRepository extends JpaRepository<OrderItem, Long> {
}
3단계: 서비스 계층 구현
이번에는 주문 생성, 주문 취소, 주문 검색 등의 비즈니스 로직을 구현해 보겠습니다.
@Service
@Transactional
public class OrderService {
private final OrderRepository orderRepository;
private final MemberService memberService;
private final ItemService itemService;
public OrderService(OrderRepository orderRepository,
MemberService memberService,
ItemService itemService) {
this.orderRepository = orderRepository;
this.memberService = memberService;
this.itemService = itemService;
}
public Long order(Long memberId, Long itemId, int count) {
// 생략...
}
public void cancelOrder(Long orderId) {
// 생략...
}
public List<Order> findOrders(OrderSearch orderSearch) {
// 생략...
}
}
이상으로 복잡한 도메인 모델과 비즈니스 로직을 다루는 JPA 실습을 마쳤습니다.
이번 실습을 통해 JPA를 활용하여 좀 더 복잡한 애플리케이션을 구축하는 방법을 배웠습니다.
좀 더 연습해보시고 어떻게 하는지 감을 익히시면 좋을 것 같습니다.
오늘도 화이팅!
'IT > 웹개발' 카테고리의 다른 글
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(2) (0) | 2023.08.30 |
---|---|
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(1) (0) | 2023.08.29 |
JPA 프로그래밍 마스터하기: 초급부터 전문가까지 실습을 통한 학습(14) (0) | 2023.08.27 |
JPA 프로그래밍 마스터하기: 초급부터 전문가까지 실습을 통한 학습(13) (0) | 2023.08.26 |
JPA 프로그래밍 마스터하기: 초급부터 전문가까지 실습을 통한 학습(12) (0) | 2023.08.25 |