Coding Planet
[김영한 JPA 프로그래밍] SQL 중심적인 개발의 문제점 본문
반응형
아래 포스트는 김영한님의 자바 ORM 표준 JPA 프로그래밍을 수강하고 기록한 내용이다.
|SQL 중심적인 개발의 문제점
- 무한 반복, 지루한 코드 : CRUD의 반복, 자바 객체를 sql로...sql을 자바객체로
- 만약 member 객체에 연락처 필드가 추가된다면? 모든 쿼리문에 연락처를 추가해야하는 사태 발생!
| 객체와 관계형 데이터베이스의 차이
1. 상속
- 관계형데이터베이스에는 기본적으로 java에서의 상속 관계가 존재하지 않는다.
- 대신 TABLE을 슈퍼타입과 서브타입으로 만들어 관계를 설정한다.
- 이는 완전히 대응하는 관계를 아니기 때문에 상속관계가 있는 객체를 각각의 테이블에 따로따로 저장하고 객체를 조회할 때는 JOIN을 사용해야한다. 따라서 코드의 복잡성이 증가한다.
- 따라서 실무에서는 DB에 저장할 객체에는 상속 관계를 안쓴다.
2. 연관관계
- 객체는 참조를 사용한다 : member.getTeam()
- 테이블은 외래 키를 사용한다 : JOIN ON M.TEAM_ID = T.TEAM_ID
- 원칙적으로 필드를 포함시키는 것이 아니라 객체 안에 Team getTeam(){ return team; }으로 참조를 포함하는 것이 바람직하다. 하지만 이렇게 객체답게 모델링을 하게 되면 Insert문 짜기가 복잡해진다.
- 따라서 원활한 사용을 위해 객체를 테이블에 맞추어 모델링하게 된다(Member 객체에 team id포함)
3. 비교하기
- 관계형데이터베이스에서 조회된 객체는 조회될 때마다 새로운 인스턴스를 생성하기 때문에 같은 데이터를 가지더라도 서로 다르다.
- 반면 자바 컬렉션에서 조회할 경우 인스턴스 자체가 같기 때문에 동일한 것으로 비교된다.
SQL 중심적인 개발의 문제점
- 객체답게 모델링할 수록 매핑 작업만 늘어난다.
반응형
Comments