2012-05-24 3 views
2

PHP에서 데이터 매퍼를 작성 중이며 도메인 객체가 클래스 테이블 상속을 따를 때 ID 맵을 구현하는 방법을 알아 내려고합니다.클래스 테이블 상속을 사용하여 ID 맵을 구현하는 방법은 무엇입니까?

내가보기에 문제는 계층 적 개체가 계층 적 데이터를 사용하기 때문에 ID 맵이 메모리 내 모델에서 데이터가 한 번만 나타납니다.

예를 들어, 내 데이터베이스에는 부모 테이블과 하위 테이블이 있습니다. 내 도메인 모델에는 Parent 클래스가 있고 그 클래스에서 확장됩니다. 부모 개체와 자식 개체를 모두 인스턴스화하고 ID 맵에 ID를 기록 할 수 있습니다. 클라이언트 코드가 동일한 부모 나 자식을 요청하면 데이터베이스에서 문제없이 캐시에서 반환 할 수 있습니다.

그러나 부모와 자녀가 모두 같은 부모 레코드와 관련이 있다면 어떻게됩니까? 즉 상위 테이블의 동일한 데이터? 나는 이제 그 데이터를 메모리에 두 번 나타내었고 하나가 수정 된 경우 (또는 두 인스턴스 모두) 변경 사항을 덮어 쓸 위험이 있습니다.

어떻게 든 아이덴티티 맵은 도메인 객체와 맵퍼와 비슷한 계층 구조를 따라야하지만 그 시점에서는 약간 복잡해집니다. 또한, 나는 많은 종속 맵핑 (Dependent Mappings)을 고려해야한다.

많은 아이디어/조언을 보내 주시면 감사하겠습니다. 당신은 당신이 반복/중복 많은 데이터를 찾을 경우, 디자인이 잘못

답변

0

IQueueable 인터페이스를 정의했으며,이 인터페이스를 구현하는 객체 만 대기열에 넣어 변경 사항을 데이터베이스에 기록 할 수 있습니다.

하위 개체는 개체 속성이 모두 포함되어있어 iQueueable을 구현합니다. 부모 개체는 대기열에 추가 할 수 없습니다.

여전히 부모 및 자식 개체의 동기화가 해제 될 수 있지만 데이터베이스 변경의 원본은 하나뿐입니다.

0

...

즉, 부모가 자녀와 공유하는 주소를 말하면 주소 표가 있어야하며 주소 표의 각 항목은 주소 표의 단일 항목을 가리 킵니다.

그렇다면 응용 프로그램에 관련 규칙이 있어야합니다. 즉, 주소가 하위 계정에서 변경된 경우 ... 어떻게합니까? 업데이트 (부모는 새 주소도 있음) 또는 새 주소를 삽입하십시오.

관련 문제