본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JPA

JPA 공부 2 - 연관관계 매핑 1 단방향 연관관계

반응형
'객체지향 설계의 목표는 자육적인 객체들의 협력 공동체를 만드는 것이다 ' -조영호(객체지향의 사실과 오해)-  

JPA도 결국엔 코드를 객체지향답게 짜기 위해 사용한다.

위의 ERD 처럼 Member와 Team이 있다고 생각해보자

 

위의 두개는 객체의 관계이고 

 

아래 두개는 DB의 연관관계이다 . 

 

현재 member 객체는 teamId를 직접 가지고 있다 데이터베이스 관점에서 객체가 설계된 것이다 . 

 

Member 객체를 생성해 team 을 참조 한다고 했을떄   membe에 team Id 를 가지고 다시 조회를 해야할 것이다.  

 

다른 말로는 객체 그래프로 탐색이 불가능하다 . 

 

객체 지향적으로 설계한다면 아래 그림과 같을 것이다 

 

 

이번 경우에는  member는 team 객체를 가지고 있다 .  맴버를 통해 member.getTeam.getName 과 같은 방식으로 객체 그래프 탐색이 가능하다. 

 

코드로 비교해보자 

 

 

            //1.데이터 관점에서의 객체 설계
               
            //멤버조회
            Member searchedMember = em.find(Member.class, member);
            
            //멤버에서 팀의 이름을 찾고 싶다면?
            //팀을 한번더 조회 해서 가져와야한다. 
            String teamOfMember = em.find(Team.class, searchedMember.getTeam_id()).getName();
           
            
            
            //2.객체지향적 설계
            MemberOOP searchedMember = em.find(MemberOOP.class, member.getId());

            //멤버에서 팀에 대한 접근이 가능하다
            String teamName = memberOOP.getTeam().getName();

 

 

 

반응형