Coding Planet

[김영한 JPA 프로그래밍] SQL 중심적인 개발의 문제점 본문

JPA

[김영한 JPA 프로그래밍] SQL 중심적인 개발의 문제점

jhj.sharon 2023. 10. 22. 15:58
반응형
아래 포스트는 김영한님의 자바 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