→ 개발자가 객체로 데이터를 가공했지만 DB에 저장할 땐 결국 SQL → SQL 중심적인 개발이 되버린다.
기능하나 추가해서 테이블이 생성 될 때마다 CRUD SQL을 다 만들어줘야 한다.
→ JdbcTemplate, MyBatis가 Mapping에 도움을 주는 것은 있지만 그래도 한계가 있다.
Example:: 회원 객체를 만들고 DB에 CRUD를 하는 기능이 있는 상태
/*회원 객체*/
public class Member {
private String memberId;
private String name;
}
/*쿼리*/
INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES ...
SELECT MEMBER_ID, NAME FROM MEMBER M
UPDATE MEMBER SET ...
/*회원 객체*/
public class Member {
private String memberId;
private String name;
private String tel;
}
/*쿼리*/
INSERT INTO MEMBER(MEMBER_ID, NAME, TEL) VALUES ...
SELECT MEMBER_ID, NAME, TEL FROM MEMBER M
UPDATE MEMBER SET ...TEL = ?
결론: SQL에 의존적인 개발을 할 수밖에 없다.
→ 관계형 데이터베이스와 객체지향은 서로 가지고있는 사상이 다르다.
→ 객체를 영구 보관하는 다양한 저장소
Object
RDB
: 현 헤게모니NoSQL
: 대안이 될 수 있을수는 있지만 main이 되기엔 아직 부족하다.File
: 객체 100만건을 Serialize 저장하고, 또 반대로 100만건을 Deserialize해서 Object화 한 다음 검색하는건 불가능하다.OODB
: 죽은지 오래객체를 관계형 데이터베이스에 저장