인프런 커뮤니티 질문&답변

Knorway님의 프로필 이미지
Knorway

작성한 질문수

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

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

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

작성

·

193

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을 쓰다가 넘어왔는데 머리를 비우기가 참 어렵네요😂

답변 1

2

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

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

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

감사합니다.

Knorway님의 프로필 이미지
Knorway
질문자

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

Knorway님의 프로필 이미지
Knorway

작성한 질문수

질문하기