Frage

Ich habe ein Projekt mit Spring und ist aufgegliedert in ein paar Dutzend DAOs und damit verbundenen DTOs.Ich bin mit JdbcTemplate, aber nicht viel anderes, als es ist genau die Ebene der Abstraktion, bin ich zufrieden.

Ich bin momentan auf der Durchführung von lazy loading auf meine DTOs, indem Sie einige ziemlich haarige code in Ihre Getter.

Basic, boilerplate-Logik ist:1.Wenn das Feld nicht null zurückgeben, seinen Wert und Ausfahrt 2.Kontakt passende DAO und Holen die relevanten DTOs 3.Lagern Sie Sie bis zum nächsten mal.

Es funktioniert gut, außer dass meine bescheidene DTOs sind gepaart mit einem ganzen Bündel von DAOs und sind nicht so POJOey.

Ein weiteres code-Geruch erscheint, wenn ich die Logik in der DAO-da wäre es Abwicklung von CRUD für Ihre DTOs und Lazy Loading, und so wie ich es verstehe-Objekte sollten eine einzelne Verantwortung.

Ich bin der Hoffnung, dass es eine relativ einfache Frühlings-Konzept, das ich verwenden kann, um zu injizieren, eine Lazy-Loader-Objekt zwischen DAOs und die DTOs um dies zu erreichen, aber jede andere Lösung würde für mich arbeiten.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Es ist einfacher zu wickeln DAO rund DAO...es hängt davon ab, wie viel von dem Modell, das Sie wollen, zu vermitteln.DTO ' s sind in der Regel nicht verwendet werden, um ein eins-zu-viele mehr mit Ihnen, als zwei oder mehr separaten Datenbank/dao-Aufrufe.In diesem Fall, Sie wirklich wollen, ein ORM.Seit Ihr auf der Suche nach einem dao-Antwort......

Es gibt nichts stoppen Sie von der Vernetzung DAO zusammen, um Ihnen einen einzigen DTO.Es ist einfacher, dann ein DTO verbunden mit einem DAO.Es ist nicht wirklich eine service-Schicht, es ist nur Bausteine des DAO.So haben Sie eine PersonDao, und eine TelephoneNumberDao.Kann eine person mehr als eine Telefonnummer, so können Sie auch haben PersonModelDAo verwendet PersonDao und TelephoneNumberDao unter der Haube zu tun, ist es Arbeit.

Alternativ können vermeiden, das ganze problem und versuchen Sie nicht, eine Karte, die 1-N zwischen person und die Telefonnummer bei der DTO-Ebene.Müssen nur Ihre Benutzeroberfläche, um die richtigen Anrufe zu dem richtigen DAO.Eigentlich mag ich diese besser, wenn Sie DTO ist.

Andere Tipps

Es ist üblich, eine Service-Schicht einzuführen, die Ihre DAOs wickelt und Griffe Bedenken, wie sie. Wenn Sie Angst, dass Sie zu viel Textvorschlag Code in Ihre DTOs setzen verzögertes Laden zu handhaben, vielleicht mit AOP könnte ein Weg sein, um dies zu erreichen. Vielleicht möchten Sie in AspectJ suchen und Weben entweder zur Compile-Zeit oder der Ladezeit. Da Sie den Byte-Code zu ändern würden direkt würden Sie nicht über die Performance-Overhead von Proxy-basierten AOP kümmern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top