객체 지향 언어 - 자바, 스칼라, ...
관계형 데이터 베이스 - 오라클, MySQL, ...
Insert into ...
update
select
delete
자바 객체를 sql로
sql을 자바 객체로
SQL에 의존적인 개발을 피하기 어렵다.
두 패러다임이 맞지 않다.
객체 지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공한다.
결국 객체를 SQL로 변환해야 한다.
Album 저장
1. 객체 분해
2. Insert into item...
3. Insert into album...
Album 조회
1. 각각의 테이블에 따른 조인 SQL 작성...
2. 각각의 객체 생성...
3. DB에 저장할 객체에는 상속 관계 안쓴다.
자바 컬렉션에 저장한다면?
list.add(album);
list.get(albumId);
객체는 참조를 사용 : member.getTeam()
테이블은 외래 키를 사용 : JOIN ON M.TEAM_ID = T.TEAM_ID
객체를 테이블에 맞춰서 모델링
객체다운 모델링을 하기 위해
객체 모델링 조회
맴버를 찾기 위해 해야할 일이 많다.
자바 컬렉션처럼 생각한다면,
객체 그래프 탐색
객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다.
처음 실행하는 SQL에 따라 탐색 범위 결정
sql은 처음에 탐색 범위를 멤버와 팀만 선택했기 때문에 팀까지만 나온다.
엔티티 신뢰 문제
다른 개발자가 find를 개발하고 이를 사용하려고 할때 객체는 있지만, 값이 없어서 신뢰가 안되는 문제가 발생한다.
모든 객체를 미리 로딩할 수는 없다.
특정한 객체만 조회하는 메서드를 일일이 만들다보니 엄청 길어진다.
new Member로 넘기기 때문에 두 member는 다르다.