style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

¿Para que sirven las clases service?

Hola.

Viendo algunos ejemplos sencillos para iniciarme en Java para web, veo que hay algunos proyectos donde se crean clases "Service" además de las clases controller, DAO, entity y los JSP para las vistas. Siendo ejemplos muy sencillos, estos "Service" lo único que hacen es encapsular a un objeto DAO, llamar a sus métodos y devolver lo mismo que devuelve el DAO. Esto a mi se me hace poco práctico, pudiéndose hacer directo desde un controller.

En un ejemplo real, ¿podria decirme alguien porfavor para qué sirven las clases service?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Pueden, como bien lo

Pueden, como bien lo mencionas para servir sólo de pasamanos, entre tu controller, y tus daos, pero por ejemplo, imagina que necesitas, en un sólo servicio, insertar en 3 o 4 tablas distintas, pues el código donde vas a invocar otros daos, va a ser precisamente en tu clase de servicio...
Por ejemplo:

// service
public void insertarEnTabla( ElObjeto elObjeto ){
    elDao.insertarEnTabla( elObjeto );
}

Fácil no? para qué hacer ése método que no hace nada, aparte de ser pasamanos del controller al dao...
bueno, pues como te decía, podrías necesitar hacer ésto

// suponiendo que usas Spring, declaras tu método como transaccional
@Transactional( readOnly=false propagation=Propagation.REQUIRED )
public void insertarEnTabla( ElObjeto elObjeto ){
    elDao1.insertarEnTabla1( elObjeto );
    elDao2.insertarEnTabla2( elObjeto );
    elDao3.insertarEnTabla3( elObjeto );
    elDao4.insertarEnTabla4( elObjeto );
}

Digo, es un ejemplo muy burdo, pero el punto es que precisamente las clases de servicio es para meter cosas de ése tipo, o por ejemplo, que necesites insertar una propiedad en el bean... como la fecha, antes de enviarlo a la base de datos

public void insertarEnTabla( ElObjeto elObjeto ){
    elDao.setFechaAlta ( new Date() );
    elDao.insertarEnTabla( elObjeto );
}

O que necesites una clase de utilería porque alguien dijo que la fecha debe ir en un formato determinado

public void insertarEnTabla( ElObjeto elObjeto ){
    elDao.setFechaAlta ( Utileria.formateaFecha( new Date() );
    elDao.insertarEnTabla( elObjeto );
}

Son cosas que no deberían ir en un controller, porque a fin de cuentas, el controller sólo debería recibir peticiones, y redireccionar respuestas, si necesita chamba extra, pues invoca servicios y los servicios a los daos...

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">