inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

양방향 연관관계와 연관관계의 주인 2 - 주의점, 정리

영한님 연관관계의 주인 개념과 관련해서 질문이 있습니다!

276

Knorway

작성한 질문수 5

0

영한님 먼저 좋은 강의 제공해주셔서 정말 감사드린단 말씀 드리고 싶습니다. 이 강의는 1강이지만 이후 강의를 보면서도 계속 돌아오는 곳이네요. 제가 여쭤보고 싶은 것은 다음과 같습니다.

객체와 데이터베이스 테이블간의 패러다임 차이를 설명하시면서 말씀하신 ‘룰’이라는 것(연관관계의 주인과 mappedby)이 에러를 수반하는 강제된 제약인 줄 알았는데 양방향 업데이트가 가능한 엔티티 설계가 기술적으로 가능하다는 것을 알게 된 후 여러 궁금증이 생겼습니다. 베스트 프랙티스는 아니겠지만요

// Team
@OneToMany
@JoinColumn(name = "team_id")
private List<Member> members = new ArrayList<>();

// Member
@ManyToOne
private Team team;

// Test
...
teamA.getMembers().add(member1);
member2.setTeam(teamB);

제 질문의 주 요지는 JPA 양방향 연관관계에서 관계의 주인이란 개념은 JPA 설계 사상과(객체지향쪽으로 패러다임 일치를 지향) 상태를 가진 ORM인 JPA에서 양쪽에 값을 채우고 반영될 수 있을 때의 혼란과 사이드 이펙트를 고려한, 기술적이라기보단 개발자(혹은 JPA)의 자의적인 제한일까 하는 것입니다.

타언어에서 다른 ORM을 쓰다가 넘어왔는데 머리를 비우기가 참 어렵네요😂

java JPA

답변 1

2

David

안녕하세요. Knorway님, 공식 서포터즈 David입니다.

양방향 연관관계에서 DB와 객체의 패러다임 불일치로 인해 발생하는 문제를 JPA의 방법(기술)으로 해소했다고 생각합니다. 다만, 말씀하신대로 연관관계의 주인에서만 추가, 수정이 가능한 부분은 자의적으로 제한했다고도 볼 수 있을 것 같습니다.

ps. 어떤 언어의 어떤 ORM 기술을 사용하셨나요?

감사합니다.

0

Knorway

Node.js의 Prisma 및 Golang의 SQLBoiler를 사용했습니다. 둘다 데이터베이스 테이블에서 type과 struct를 생성해주는 기능이 마음에 들어서 사용했으니 완전 반대죠😂. 답변 감사합니다!

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

33

2

inheritance startegy 선택시 고려사항

0

24

1

Entity 동등성 비교

0

24

1

실무 조언 관련 질문입니다.

0

48

1

H2데이터베이스 파일 생성

0

59

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

57

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

58

1

JPQL 메소드와 락

0

56

1

Delivery @OneToOne

0

62

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

98

2

UnsupportedOperationException 발생

0

89

3

H2 Database 연결이 안됩니다.

0

98

2

연관관계 매핑 질문드립니다.

0

88

2

h2데이터베이스 실행오류

0

110

2

persistence.xml

0

112

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

83

1

영속성 컨텍스트

0

70

1

JPA 프록시

0

100

1

Native Query와 MyBatis

0

73

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

93

1

임베디드 타입 예시 코드 관련 질문

0

121

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

96

3

인텔리제이 패키지 커서 단축키 질문

0

109

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

149

1