좀더 객체 지향적인 설계가 어떻게 되는지 알아보자. 아주 어려우니 집중하자
방향 : 단방향, 양방향
다중성 : 다대일, 일대다, 일대일, 다대다 이해
연관관계의 주인 : 객체 양방향 연관관계는 관리 주인이 필요(두 객체 연관관계 중 하나를 정해서 테이블의 외래키를 관리해야 하는데 이것을 연관관계의 주인)
회원과 팀이 있다.
회원은 하나의 팀에만 소속될 수 있다.
회원과 팀은 다대일 관계다.
멤버와 팀을 동시에 등록하고 싶은경우 팀을 만들고 persist를 통해 id를 받고 이를 다시 가져와서 멤버 객체에 넣고 persist를 해야한다. 상당히 귀찮고 객체지향스럽지 않다.
Team team = new Team();
team.setName("TeamA");
em.persist(team);
Member member = new Member();
member.setUesrname("member1");
member.setTeamId(team.getId()); // 요게 상당히 애매하다. 외래키 식별자를 직접 다루는 상황
em.persist(member)
// 조회하는 경우도 상당히 불편해진다.
Member member = em.find(Member.class, member.getId());
Long findTeamId = findMember.getTeamId();
Team findTeam = em.find(Team.class, findTeamId());