작성
·
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을 쓰다가 넘어왔는데 머리를 비우기가 참 어렵네요😂
Node.js의 Prisma 및 Golang의 SQLBoiler를 사용했습니다. 둘다 데이터베이스 테이블에서 type과 struct를 생성해주는 기능이 마음에 들어서 사용했으니 완전 반대죠😂. 답변 감사합니다!