inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 설계시 주의점

양방향 연관관계 메서드에서 순서

해결된 질문

388

이준희

작성한 질문수 1

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요. 강사님 덕분에 JPA를 이해하며 공부중입니다. 항상 양질의 강의와 사례를 들어 설명해주셔서 감사합니다. 다름이 아니라 제가 양방향 연관관계에 있어 이해한것이 맞는지, 그리고 연관관계 메서드 설정 시 코드원리에 있어 궁금한 점이 있어 질문남깁니다.

<이해한 내용>

  1. 양방향 연관관계는 RDBMS에서는 표현가능하나, 자바 객체에서는 직접적으로 표현이 어려워 단방향 2개를 사용하여 표현한다.

  2. 그렇기에 서로를 참조하는 형태이기 때문에 데이터 변경을 양쪽에서하면 무한루프, 데이터 불일치,성능 문제가 발생한다.

  3. 그렇기에 연관관계의 주인(테이블에서의 N)으로 설정해주어 주인에서만 데이터 반영이가능하고 다른 1쪽에서는 mappedBy를 이용해 읽기 전용으로만 설정하여준다.

  4.  

    JPA 질문.GIF그렇기에 member.setTeam(team);연관관계 편의 메서드를 통해 참조를 넣어주고, 영속성에 의해 관리되는 즉 1차 캐시에서의 객체내에서 조회될 수 있도록 한다.(객체지향적임) 물론 em.flush();em.clear();를 사용하면 자바에서 우리가만든 객체가아닌 JPA에서의 객체를 반환하여 조회되서 상관없긴하다. 근데 넣어주자.

  5. 연관관계 편의메서드는 비즈니스 로직상 컨트롤하는 부분이 많은쪽에 만드는것이 좋다.

<질문>

JPA질문2.GIF이 연관관계 메서드에서는 orderItem내의 order가 주입되지않은상태로 List에 저장된 후 order를 주입해주는데 결과는 똑같은것같은데JPA질문3.GIF위와같이 주입시켜주고 그것을 List에 저장시키는게 더 좋은것아닌지 궁금해서 질문드립니다. 어차피 조회할때는 Order객체를 통하기때문에 순서는 상관이없나요? 사소한것일수도있고 제 자바에 대한 부족함이 커서그런것같지만 너무 궁금해서 질문드립니다.. 장문이라 죄송합니다ㅜㅜ

java spring 웹앱 spring-boot jpa

답변 1

0

y2gcoder

안녕하세요. 이준희님, 공식 서포터즈 y2gcoder입니다.

이 부분은 orderItem 객체가 참조형이기 때문에 큰 상관은 없다고 말씀드리고 싶습니다.

결국 orderItem 객체는 참조형이고, 인스턴스는 힙영역에 위치하고 orderItem 변수에는 해당 객체의 참조값이 있기 때문입니다.

변수를 통해 해당 객체에 접근해서 값을 변경할 수 있기 때문에 순서가 큰 상관은 없을 것 같으나 이준희님께서 말씀해주신 것처럼 순서를 해주는 것도 order가 세팅이 된 orderItem 객체를 넣는다는 의도에서는 충분히 합리적인 이유가 된다고 생각합니다 🙂

감사합니다.

1

이준희

친절한 설명 감사합니다! 덕분에 이해가 되었습니다 😊

sdk 설정 오류

0

53

2

오탈자 - @Transactional

0

56

1

src/test/resources 테스트 경로 문제

0

50

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

64

1

MemberRepositoryTest 실행오류

0

81

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

183

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

142

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

51

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

60

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

102

1

멤버서비스테스트 부분에서 막힙니다.

0

165

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

116

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

120

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

114

1

24분 27초 연관관계 편의 메서드 위치

0

113

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

109

2

빌드 툴, Gradle

0

59

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

77

2

Repository에서 EntityManager 주입 방식 차이

0

90

1

롬복과 사용자 정의 setter 메서드

0

72

1

주문 목록 조회 fetch join 질문드립니다

0

82

1

dirty checking 질문드립니다.

0

83

1

동시성 관련 질문입니다

0

75

1