인프런 커뮤니티 질문&답변
@OneToMany에 관한 질문
작성
·
278
1
안녕하세요 영한님. 질문이 있어 이렇게 글을 남깁니다.
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "user")
private List<Order> orders;
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "orderId")
private Long orderId;
코드가 이렇게 다른 케이스로 2가지가 있는데 위에는 위에는 일대다를 나타내는 @OneToMany를 사용하였고 밑에는 그냥 @Column을 사용했습니다. 만약 아래와 같은 요구조건이 들어왔다고 가정해보겠습니다. "사용자의 주문중 현재 Active 상태인 것을 조회하라"
이 경우 각각은
public List<Order> getActiveOrder () {
// 모종의 방법으로 user 찾음
List<Order> orders = user.getOrders(); // 여기서 Order 테이블에 쿼리 나감
List<Order> result = new ArrayList<>();
for (Order order : orders) {
if (order.getStatus()) == ACTIVE {
result.add(order);
}
}
return result;
}
public List<Order> getActiveOrder () {
//모종의 방법으로 user 찾음
Long orderId = user.getOrderId();
return orderRepository.findOrderByStatusAndId(ACTIVE, user.getOrderId());
}
이렇게 될거 같은데 위는 user의 모든 Order를 찾은 다음 결과를 도출해내니까 아래의 경우보다 훨씬 느릴거 같은데 이 경우엔 @OneToMany 를 안쓰는 게 더 좋은가요??
답변 1
0
김영한
지식공유자
안녕하세요. fightnyy님
네 이럴 경우에는 @OneToMany를 사용하지 않아도 됩니다.
추가로 다음도 참고해주세요.
https://www.inflearn.com/questions/358925
감사합니다.





