[ SourceCode 참고]
https://github.com/jjangsky/Testing-study
Persistence Layer는 Data Access 여부를 확인하는 것이라 단위 테스트에 가깝지만, Business Layer는 Persistence Layer에서 데이터를 조회한 것 기반으로 테스트가 진행되어 두 개의 계층을 보는 통합 테스트
이다.
OrderProduct Entity 생성
Order Entity
와 Product Entity
는 ManyToMany 관계에서 중간에 관계를 해소할 수 있는 Mapping Entity가 필요하다.
/* OrderProdcut Entity */
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class OrderProduct extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 지연 로딩 사용하여 필요할 때만 사용
@ManyToOne(fetch = FetchType.LAZY)
private Order order;
@ManyToOne(fetch = FetchType.LAZY)
private Product product;
public OrderProduct(Order order, Product product) {
this.order = order;
this.product = product;
}
}
→ 연관 관계 설정할 때 FetchType.LAZY
로 설정하여 필요할 때 불러올 수 있도록 한다.