De største grunde til, at jeg har en tendens til at hælde til at have et servicelag, er af følgende to grunde...
-
Markering af metoder som @Transactional, så alle DAO-anmodninger i denne metode finder sted i en enkelt transaktion.
-
Jeg kan øge adskillelsen af bekymring fra DAO og brugerrollerne. Jeg kan markere metoder som krævende bestemte brugerroller, og som sådan passer det rigtig godt sammen med Spring Security.
Du kan bare kalde en DAO fra controlleren, men det lader dig hænge, hvis du vil udvide senere. For at få forbindelsen kan du bruge markere tjenesten som @Transactional og DAO'en som et @Repository og Spring vil klare det hele med at få sessionsobjektet til dig og injektion osv.
Jeg har en tendens til (måske forkert) at tænke på servicelaget som en facade, der bliver tilgået, hvad enten det er fra en webservice eller en controller eller hvad som helst, det holder adskillelse.