반응형
'객체지향 설계의 목표는 자육적인 객체들의 협력 공동체를 만드는 것이다 ' -조영호(객체지향의 사실과 오해)-
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();
반응형
'JPA' 카테고리의 다른 글
JPA 공부 4 - 일대다 단방향,양방향(1:N) (비추) (0) | 2021.06.04 |
---|---|
JPA 공부 3 - 연관관계 매핑2 양방향 연관관계와 연관관계 주인 (0) | 2021.06.04 |
JPA 공부 1 - 영속성 컨텍스트 (0) | 2021.06.03 |
Springboot- JPA 페이징처리 (0) | 2020.11.20 |
JPA 패치조인 활용 (0) | 2020.11.13 |