Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ho bisogno di un oggetto Service?

I motivi principali per cui tendo ad avere un livello di servizio sono i seguenti due motivi...

  1. Contrassegnare i metodi come @Transactional in modo che tutte le richieste DAO all'interno di questo metodo avvengano in un'unica transazione.

  2. Posso aumentare la separazione delle preoccupazioni dal DAO e dai ruoli utente. Posso contrassegnare i metodi come richiedenti determinati ruoli utente e come tali si adatta molto bene a Spring Security.

Puoi semplicemente chiamare un DAO dal controller, ma ti lascia bloccato se vuoi espandere in seguito. Per ottenere la connessione puoi utilizzare contrassegna il servizio come @Transactional e DAO come @Repository e Spring gestirà l'intero ottenendo l'oggetto della sessione per te e l'iniezione ecc.

Tendo a pensare (forse in modo errato) al livello di servizio come a una facciata a cui si accede, che si tratti di un servizio Web o di un controller o altro, mantiene la separazione.