1. 무한 반복, 지루한 코드
CRUD 맨날 하는거 맨날 반복,,,
2. 설계 다 했는데 기획자가 마지막에 연락처 추가해달라 했을 경우
그럼 객체에 연락처 칼럼 넣고, 쿼리들을 한땀한땀 다 수정해야 함
3. 개발자 = SQL 매퍼
4. 객체의 상속 관계를 DB에 밀어 넣을 때 슈퍼타입/서브타입 이라는 관계를 이용해서 어렵게 어렵게 DB에 넣음
여기까진 ㅇㅋ 어떻게든 했어
근데?
DB에 데이터를 넣을 때는 쿼리를 2번 작성해야 함. 부모 테이블 한번, 자식 테이블 한번
여기까지도 ㅇㅋ
근데 조회할 때는?
조인 쿼리를 만들고 결과를 생성해서 조회해야 함 -> 점점 복잡함...
하지만 자바 컬렉션을 조회한다고 생각하면 그냥 부모 타입으로도 조회할 수 있고, 그냥 id로 조회할 수 있고 암튼 쉬워짐 !
5. 객체는 참조를 사용, 테이블은 외래 키를 사용(조인)
객체는 한 방향으로만 찾아갈 수 있지만, 테이블은 양방향으로 조인 가능 -> 둘이 차이가 있음
6. 객체 그래프 탐색 - 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다.
.getTeam().getId()... 이런 식으로 자유롭게 탐색할 수 있어야 한다는 뜻
근데 이렇게 못함. 왜? 처음 작성한 sql문에 따라서 탐색 범위가 결정되어 버리기 때문 !
(그니까 sql문이 싹다ㅏㅏㅏㅏ 짜져 있지 않는 이상 불가능. 그 안에 sql문을 눈으로 직접 까보지 않는 이상 불가능.)
정리
객체답게 모델링을 할 수록 매핑 작업만 늘어남
그렇다면
객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수는 없을까???
JPA (Java Persistence API)