1.sql 중심적인 개발의 문제점
1.SQL 중심적인 개발의 문제점
지금시대는 객체를 관계형 DB에 저장해서 관리해야하는 시대(현재 데이터 베이스의 패권은 관계형 DB가 쥐고있다.) 그래서 코드를 열어보면 대부분 SQL 이다.
📝정리 객체지향과 관계형 데이터베이스(RDB)는 사상이 다른데 현재 주로 SQL 중심적인 개발이 이루어지고있고 이건 같은 쿼리의 무한 반복과 지루한 코드 , 수정에 의한 오류 야기, 객체지향적인 코드 작성 어려움 등의 많은 문제점을 가져온다. 또 객체답게 모델링 할수록 매핑 작업만 늘어난다.
1. 패러다임의 불일치 : 관계형 데이터베이스 VS 객체지향! 둘의 사상이 완전히 다르다.
RDB: 데이터를 잘 정규화하여 보관하는게 목표 객체: 필드와 메서드를 잘 묶어서 캡슐화해서 사용하는게 목표
-
객체를 RDB에 넣으려고 하니 여러가지 문제 발생
2. 객체와 RDB의 차이
-
상속 객체엔 상속관계가 있지만 RDB엔 상속관계가 없다. (유사한 것 있지만 다름)
-
연관관계 객체는 참조(레퍼런스)를 가지고있지만 RDB는 PK나 FK로 필요한 데이터를 JOIN해서 사용한다. 객체의 참조: member.getTeam()
테이블의 FK: JOIN ON M.TEAM_ID = T.TEAM_ID
그러나 보통 DB테이블에 맞춰서 객체를 설계한다. : 객체지향적 코딩 X
- 객체 그래프 탐색 :객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다. SQL에 따라 객체 탐색범위가 달라지기 때문에 엔티티 신뢰문제가 생긴다. -> 모든 객체를 다 불러온 쿼리가 아닌 이상 쿼리로 가져오지 않은 값 존재
SELECT M., T. FROM MEMBER M JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID;
member.getTeam();// OK member.getOrder(); // null
📝소감 ORM을 배운적이 없고 여태 mybatis만 사용해왔는데 객체지향언어인 자바를 사용하면서 왜 JPA를 제대로 배워볼 생각을 안했는지 모르겠다. 강의만 사두고 듣길 거부하고있었는데 되게 흥미로웠고 언젠간 꼭 익숙하게 사용하고싶다.