기능하나 추가해서 테이블을 만들면 CRUD 쿼리를 다 짜야합니다. 그리고 자바 객체를 SQL로, SQL을 자바 객체로 바꾸는 작업을 반복해야합니다. 테이블이 10개라면 10개 다 해줘야합니다.
mybatis 같은 것으로 매핑 작업이 줄었다고 하지만 결국 개발자가 SQL을 다 짜야합니다.
예를 들어 회원을 설계한다고 할 때, 회원 테이블 만들고 회원 객체를 만들고 디비에 넣고 빼려면 쿼리를 짜야합니다. 그런데 개발이 끝나고 갑자기 연락처를 추가해야한다면?
테이블에도 연락처 추가하고 객체에 연락처를 넣고 위의 그림처럼 모든 쿼리를 수정해야합니다.
하지만 이렇게 하면 중간에 실수가 발생할 확률이 늘어납니다.
그러니 관계형 데이터베이스를 사용하면 SQL에 의존적인 개발을 피하기가 어렵습니다.
객체 지향이 나온 사상과 관계형 데이터베이스가 나온 사상이 완전 다릅니다.
관계형 데이터베이스는 데이터를 잘 정규화해서 보관하는게 목표고, 객체는 필드나 메서드 등을 잘 묶어서 캡슐화해서 쓰는게 목표입니다.
그래서 패러다임이 안맞는데 객체를 관계형 데이터베이스에 넣으려고 하니 여러 문제가 발생합니다.
객체를 영구 보관하는 다양한 저장소가 있긴 하지만 현실적인 대안은 관계형 데이터베이스라서 어쩔 수 없이 관계형 데이터베이스를 사용해야합니다.
그래서 객체를 SQL로 변환하고 RDB에 저장하는 것을 어쩔 수 없이 개발자가 하고 있습니다.