초록색 바탕은 추가적으로 찾아봐야하는 부분이다.
데이터 읽기
데이터를 읽는 메서드를 넣을 위치는 인터페이스 패턴에 따라 달라진다.
데이터베이스와 상호작용하는 클래스가 테이블 기반인 경우 데이터베이스의 테이블마다 클래스 인스턴스가 하나씩 있으므로 읽기 메서드를 삽입 및 업데이트와 결합하는 방법을 쓸 수 있다.
반면 행 기반인 경우 데이터베이스의 행마다 상호작용 클래스가 하나씩 있으므로 이러한 방법을 쓸 수 없다.
행 기반 클래스를 사용하는 경우 검색 작업을 정적으로 만들 수 있지만, 그러면 데이터베이스 작업을 대체할 수 없게 된다. 즉, 테스트 시 데이터베이스를 서비스 스텁으로 대체할 수 없다. 이럴땐 검색기 객체를 별도로 만드는게 가장 좋은 방법이다. 왜냐하면, 각 검색기 클래스는 SQL 쿼리를 캡슐화하는 여러 메서드를 포함하며, 쿼리를 실행하면 검색기 객체가 적절한 행 기반 객체의 컬렉션을 반환한다.
데이터를 읽을 때 지켜야 할 몇가지 규칙
가급적 여러 행을 한 번에 읽는다. 일반적으로 너무 많이 읽는 것이 너무 적게 읽는 것보다 낫다. 데이터베이스 접근을 줄이는 다른 방법은 조인을 사용해 쿼리 하나로 여러 테이블을 한 번에 가져오는 것이다. 쿼리 결과는 이상해 보일 수 있지만 속도를 향상하는 데 큰 도움이 된다.
이 경우 조인된 데이블의 데이터를 얻는 게이트웨이나 한 번의 호출로 여러 도메인 객체를 로드하는 데이터 매퍼를 사용할 수 있다. 다만 최대 3~4개의 조인이 가장 좋다.
구조적 매핑 패턴
관계 매핑
객체는 참조(메모리 주소나 메모리 관리 환경의 런타임에 보관되는)를 저장하는 방법으로 연결한다. 관계형 데이터베이스는 다른 테이블에 대한 키를 생성해 연결을 처리한다.
객체는 컬렉션을 사용해 단일 필드로 여러 참조를 처리할 수 있다. 관계형은 정규화를 지원하기 위해 모든 연관 링크가 단일 값을 가져야 한다.
다대다 관계를 처리하는 방법
관계형 데이터베이스는 다대드를 직접 처리할 수 없으므로 연관 테이블 매핑을 사용해 다대다 관계를 처리하는 새 관계형 테이블을 만들어야 한다.
'Study > 엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글
09장 - 도메인 논리 패턴 (0) | 2023.02.20 |
---|---|
05장 - 동시성 (0) | 2023.02.14 |
03장 - 관계형 데이터베이스 매핑 01 - 아키텍처 패턴 / 동작 문제 (0) | 2023.02.07 |
02장 - 도메인 논리 구성 (0) | 2023.02.07 |
01장 - 계층화 02 : 계층의 발전과 주요 계층 (0) | 2023.02.01 |