De största anledningarna till att jag tenderar att luta mot att ha ett servicelager är av följande två anledningar...
-
Markera metoder som @Transactional så att alla DAO-förfrågningar inom denna metod sker i en enda transaktion.
-
Jag kan öka separeringen av oro från DAO och användarrollerna. Jag kan markera metoder som kräver vissa användarroller och som sådan passar det riktigt bra med Spring Security.
Du kan bara ringa en DAO från styrenheten, men det lämnar dig fast om du vill utöka senare. För att få anslutningen kan du använda markera tjänsten som @Transactional och DAO som ett @Repository och Spring kommer att hantera hela att hämta sessionsobjektet åt dig och injektion etc.
Jag tenderar att (kanske felaktigt) tänka på tjänsteskiktet som en fasad som nås, vare sig det är från en webbtjänst eller en controller eller vad som helst, det håller separation.