ORM은 개념이다.
객체를 관계형 DB에 매핑하는것을 의미한다.
ORM의 구현 방식은 다양하게 있다.
이번에 이야기할 Active Record Pattern 이나 Data Mapper Pattern은 ORM의 구현체다.
이 패턴은 DB 모델이 데이터에 엑세스 하는 방법이다.
DB는 모델 객체에 랩핑되고, 각 개체들은 하나의 row에 연결된다.
모델은 DB 스키마를 보면서 자동으로 모델 속성들을 결정할 수 있다.
persistent layer(DB)와 모델을 완전히 분리한다.
매퍼가 모델과 DB사이에서 데이터를 이동시킨다.
-> 모델 객체는 DB에 관해 아무것도 모른다.
-> 모델과 DB사이에 의존성이 적어져, 서로가 독립적으로 유지될 수 있다.
CRUD based VS Domain based
코드가 깔끔하게 디비로 매핑됨.
모델간 관계를 구현할때, 엄격하게 룰을 정하지 않음
→ 빠르고 쉽다.
하지만 비즈니스로직 수행이나, 어떤 룰을 잘 만족 시켜야하는 앱에서는 Data Mapper를 사용하자.
데이터 매퍼 패턴은 데이터와 데이터의 영속성을 다루는 제약사항들을 강력하게 한다.
엔터티들과 함께 비즈니스 룰의 캡슐화를 가능하게 한다.
새 시장을 테스트하기 위한 MVP 앱. → Active Record Pattern
(이미 존재하는 시장)레거시 시스템에서 새 앱을 만들때 → Data Mapper
이미 룰들이 있고, 비즈니스 시행 사항들이 있다.
레일즈로 CRUD를 만들다가 스프링으로 똑같은 것을 만들어 보면, 굉장히 답답할 수 있다.
나도 그런 느낌을 받았다.
추가 레이어가 많네? 필요한 걸까? 할게 많아지네?
반대로 스프링을 하다가 레일즈나 장고를 써보면, 뭔가 대충 만드는 느낌이 들 수 있을 것 같다.
정답은 없다.
상황에 맞게 적절히 사용하자.