Moin. Was ich meine hängt auch mit dem 2. Punkt zusammen. Wenn ich CRUD bereitstellen will auf den einzelnen Datenobjekten (sprich: Datenbanktabellen), dann muss ich dem Anwender eine Möglichkeit geben, ein bestimmtes Auswählen zu können. Stichwort: Vergleichsmerkmal.
Beim Objekt vom Typ Person wäre das also entweder:
public Person getPerson(long id) {
return Container.getPersonById(id);
}
oder
public Person getPerson(String personalId) {
return Container.getPersonByPersonalId(personalId);
}
oder
public Person getPerson(String name, String vorname, String personalId) {
return Container.getPerson(new Person(name, vorname, personalId));
}
wobei
public class Container {
public Person getPerson(Person p) {
for (Person item : personList) {
if (item.equals(p))
return item;
}
return null;
}
}
}
D.h. in Container wird equals benutzt. Mit equals definiere ich wann ein Objekt vom Typ Person gleich ist. Dabei habe ich aber eine Alt-Datenbank, auf die ich aufsetzen muss.
Also, ich beschreib mal kurz die Systemumgebung: Wir haben zwei Systeme LS (lokales System) und FS (fremdes System). Es gibt jeweils zwei Datenbanken mit unterschiedlicher Logik in LS und FS. Am LS wollen wir die Möglichkeit schaffen, dass das FS über eine Art 3. Logik (das stellt eben die Web Service Schnittstelle dar) mit unserem System Daten austauschen kann. Dabei gibt es Gemeinsamkeiten und Unterschiede. Beispiel:
Im FS werden Daten gehalten, die Beschreiben, dass eine PRIVATPERSON in einem SUPERMARKT OBST kauft. Im LS wird beschrieben, dass eine HÄNDLER in einem ELEKTROGESCHÄFT ELEKTROGERÄTE kauft. (Ich lasse jetzt mal Spezialisierungen weg, dass der Händler Rabatt bekommt, oder so was).
Also schaffen wir eine Schnittstelle, die von der Logik her beschreibt, dass eine PERSON an einem ORT ETWAS kauft. Einfach Abstraktion... Eigentlich gibts da erstmal ein Abbildungsproblem zwischen diesen 3 Logiken, das zu klären ist.
Zurück zur Ausgangsfrage: Wenn ich jetzt in diese Schnittstellenlogik die spezifischen Primärschlüssel (id) als Vergleichsmerkmal einbringe, dann erscheint mir das zu genau.
Du würdest so etwas als WS-Operation vorschlagen wollen:
public long[] getPersonIds();
Um alle id's der PERSON zurückzubekommen? Irgendwie gefällt mir das nicht so richtig.
Ach ich weiß nicht. Muss nochmal drüber nachdenken...
Fred