整合,我們必須首先像DDD +休眠+ SOA的
class Person extends EntityBase<Person, PersonNumber>{
private PersonNumber personNumber;
private String name;
private Contact contact;
private String educationLevel;
}
class Contact extends ValueObjectBase<Contact> {
private String phone;
private String address;
private String contactPerson;
}
的典範,但現在我們必須與花葯系統名爲「系統DC」的整合,一直是原來的人表拆開,將personNumber,姓名,電話,地址欄現已移至「系統DC」。和「SystemDC」提供一個數據庫視圖「DC_PersonView」給我們查詢。如果我們需要創建一個人,我們必須從「SystemDC」調用webservice。
所以我們定義了一個personDTO像
class PersonDTO{
private PersonNumber personNumber;
private String name;
private String phone;
private String address;
}
計劃1:
- 重構人IPerson接口
在PersonWrape reposito定義PersonWrape類
class PersonWrape implements IPerson { private Person person; private PersonDTO personDTO; }
RY
void SavePerson(IPerson person) { systemDC.saveWebservice(person.getPersonDTO); personRepository.save(person);// map the column not in systemDC like educationLevel to our person table. }
計劃2: 只修改personRepository:
void SavePerson(IPerson person) {
PersonDTO personDTO = PersonDTO.fromEntiry(person);
systemDC.saveWebservice(personDTO);
personRepository.save(person);// map the column not in systemDC like educationLevel
}
但查詢的人是truble ..
我們如何在此種情況下的模型?請給我們一些建議。
個人實體是否需要存在於兩個系統(有界上下文)中? – eulerfx
是的,在我們的系統中我們需要完整的Person實體。但是我們必須更新Person實體,如1.更新我們的數據庫2.通過webservice更新另一列.. – tobato
因此,系統DC只需要人員數據子集的副本?系統DC是否將任何人員數據存儲在您的系統中?系統DC是否處理需要在系統中反映的人員數據? – eulerfx