2015-08-17 14 views
5

Ich habe User And Role Einheiten und Service, DAO-Schichten für sie. Ich brauche die Rollenliste von UserService.Anrufdienst vs Dao von einem anderen Dienst

Welche Schicht sollte ich von UserService verwenden? Anruflistenmethode von RoleService vs RoleDAO? Welche ist üblich und warum?

Antwort

8

Normalerweise befindet sich die DAO-Schicht in der Nähe der Datenbank. Die Serviceschicht kapselt Ihre Geschäftslogik und führt Transaktionen oder andere Dinge aus, anstatt nur DAO aufzurufen.

Dienst eines anderen Dienstes Aufruf ist häufiger, weil

  1. Ihr Roleservice einig Business-Code ausgewertet hat, können Sie von Transaktionen oder Weitergabe von Nachrichten über JMS profitieren oder Sie können eine gewisse Sicherheit auf Service-Methoden in Zukunft haben. Eine Trennung von Bedenken ist also eine gute Praxis.

  2. Einfach, die Dienste zu verspotten und zu testen (dies kann argumentiert werden, sogar DAO kann getestet werden), aber Trennung der Geschäftslogik ist eine gute Möglichkeit, Service-Layer-Schnittstellen zu verwenden.

Aber wenn Sie eine Business-Logik in Service-Layer nicht haben, können Sie, indem Sie einfach mit DAO redundanten Code vermeiden (aber für die Zukunft erhalten Sie einen Code Schulden für Refactoring, wenn Sie von Service-Layer-Geschäft denken)

2

Rufen Sie die Listenmethode in RoleService auf.

Die Geschäftslogik um Rollen kann einen Tag ändern und alle Änderungen in der RoleService, um das zu handhaben, wird für alle Code nutzlos sein, der das DAO direkt aufruft.

+0

Ja, ich dachte zuerst genauso. Aber der Dienst rief seine DAO an, und ich dachte, es wäre vielleicht eine gute Idee (vielleicht gibt es einige Gründe), DAO's nur von der Dienstschicht aus aufzurufen, weil Dienstschicht zum Aufrufen von DAO verwendet wird. – Erlan

+1

Dienstleistungen Anrufdienste ist völlig in Ordnung – cahen