Nachdem ich immer wieder mal mit der Frage konfrontiert werde, warum man denn ein DAO benötige wenn ein Gateway auch reicht. Was ein DAO (DataAccessObject) macht ist eigentlich jedem klar.
Wenn man dieses DesignPattern aber "erweitert" in dem man ein Gateway hinzunimmt kommt einem immer wieder der Gedanke auf das man nicht nur eine Liste über das Gateway bekommen kann sondern auch updates oder deletes über ein Gatway abwickeln kann. In dem man z.b. einfach eine Liste von IDs zum löschen übergibt?!
Im Unterschied zum DAO gibt ein Gateway (bei grösseren Datenmengen) keine Getter und Setter im Objekt mit zurück, sondern lediglich ein Query-Object oder gar nur eine CSV-Liste.
Wenn man einem Gateway eine Liste von IDs der einzelnen Datensätze über gibt, fällt natürlich zwangsläufig die Prüfung der Typen bei der Parameterübergabe eines einzelnen Datensatzes weg. Was ich auch sicherheitsgründen auf jeden Fall nutzen würde.