본문 바로가기
Spring Boot

스프링부트+JPA - 8편 ( OOP관점에서의 모델링 )

by SICDev 2021. 8. 20.
반응형

JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다


모델링한다는 것은 추상적인 개념을 현실세계에 뽑아내는 것을 의미한다❗

 

자동차 클래스와 엔진 클래스가 있다고 가정해보자.

자동차 클래스에서 엔진 클래스를 사용하기 위해선 상속을 사용해서는 안된다❗

왜❓ Car클래스가 Engine클래스를 Extends하면 Engine이 부모 클래스가 되어버리니 말이 안되는것이다.

그래서 상속 대신 컴포지션(결합)이라는 방법을 사용해야한다.

 

컴포지션은 JPA가 클래스를 테이블로 모델링할 때, 필드 중 객체(클래스)가 존재하면 그 객체에 대한 테이블을 따로 만들고 그 객체에 대한 id(PK)컬럼을 만들어서 매핑(관리)하는 것이다.

 

아래 코드와 같이 Car클래스안에 Engine클래스를 선언해주면 된다👏👏

Class Car {
  long id;
  String name;
  String color;
  Engine engine;
}

Class Engine {
  long id;
  int power;
}

연관관계를 매핑해줘야하지만 지금은 간단하게 생각만해보자👏

JPA는 클래스에서 테이블을 자동생성 해주기 때문에 아래와 같은식으로 테이블이 생긴다.

 

Car Table

id name color engineId
1 K5 White 2
2 SONATA Black 1

Engine Table

id power
1 2000
2 4000

 

ORM이 아닌 기존의 SQL 중심의 시스템에서는 불가능한 일이다❗ 

이런식으로 JPAOOP 관점에서 클래스(객체)를 설계하고 그것을 기반으로 모델링 할 수 있도록 도와준다.

 

 

 

 

출처

https://www.youtube.com/watch?v=XBG6CUtVCIg&list=PL93mKxaRDidG_OIfRQ4nztPQ13y74lCYg
반응형