양방향 매핑과 객체 그래프 탐색 질문
안녕하세요.
이번 강의에서 양방향 관계로 매핑했을때 오너 엔티티에서 관계를 맺어주는 코드가 필수고 종속 엔티티에서 관계를 맺어주는 코드는 optional하다고 설명을 해주셨는데요
예를 들어 강의에서처럼 Study(오너), Account(종속) 엔티티가 있을때 객체에서는 study.setOwner(account)만 해주면 Study 테이블과 Account 테이블에 데이터가 잘 들어가잖아요
근데 객체측면에서 account.getStudies()와 같이 종속 엔티티에서 객체 그래프 탐색이 필요한 경우에는 account.getStudies().add(study)가 optional하지 않고 필수적인거 맞나요?
코드 작성해서 실행은 해봤는데 확실히 알고싶어서 질문드립니다. @OneTyMany(mappedBy)로 JPA가 어디까지 해주는건지 헷갈리네요.
감사합니다.
답변 1
1
@OneTyMany(mappedBy)로 JPA가 해주는거는 엔티티를 DB에 맵핑할 때 해당 변수가 상대편 쪽에 어떤 이름으로 맵핑이 되어 있는지 알려주는 용도이고, 양방향 관계를 Many쪽에서 관리할 때 주로 쓰는 설정입니다.
Account에 Study를 OneToMany 양방향 관계로 만들었다는 가정하에, @OneToMany(mapped)를 사용하셨다면 Many쪽 그러니까 Study라고 알려주는 용도인거죠. 그렇게 안하면 Account에서 Study로, Study에서 Account로 각기 다른 단방향 관계 두개가 만들어진걸로 인식합니다.
객체 관계를 만들어 주는건 hp님께서 설명하신 내용이 맞습니다. 객체 관계를 생각하면 두쪽 모두 객체 관계를 만들어 줘야 합니다.
spring boot 2.7.13-SNAPSHOT trace 소문자 로그 안나옴
0
533
1
<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문
0
392
1
comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?
0
407
1
@EnableJpaRepositories 설정을 스프링부트가 어디에서 자동설정하나요?
0
451
0
PersistenceContext 관련 질문드립니다.
0
335
1
지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다
0
338
1
transaction 구간이 길어질 경우의 처리방법 문의드립니다.
0
905
1
docker postgres
0
293
1
Multiple DataSource 사용 시 transaction 관련 질문 드립니다.
0
2908
1
entity 중 null이 아닌 필드만 update 할 방법이 있을까요?
0
1191
1
Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?
0
385
1
엔티티를 상속받는 DTO가 일반적인가요?
1
1847
1
커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.
0
339
1
연관관계 매핑 어떤식으로 해야될지 감이 안잡힙니다.
0
566
4
EntityManager 주입시 Annotation관련 질문드립니다.
0
565
1
클래스 기반 프로젝션 사용 관련 질문
0
560
1
save 메서드 질문드립니다.
0
258
1
복잡한 통계쿼리도 JPA로 가능한가요?
2
5593
1
find 와 get의 차이가 무엇인가요?
0
890
1
실무에서 JPA 할 때 FK로 개발할때 연관관계를 꼭 맺어주어야 하나요?
0
998
1
\dt Did not find any relations.
0
481
1
소스코드는 어디서 볼 수 있을까요?
1
287
1
table 생성과 select 문에 대한 질문
0
174
1
스프링 데이터 RepositoryTest 관련 질문
0
2173
2





