He estado tratando de encontrar un flujo para una aplicación web básica por niveles, y he estado leyendo información conflictiva en línea. Lo que estoy tratando de averiguar es si hay una ventaja de seguir usando objetos DTO de su capa DAO a Servicio mediante el uso de algún tipo de mapeador.
El flujo básico que preveo es el siguiente:
- Modelo / formulario de IU -> Controlador
- El controlador convierte el modelo en objeto de dominio (entidad)
- Objeto de dominio -> Capa de servicio
- Objeto de dominio -> DAO
- DAO -> Objeto (s) de dominio
- Servicio -> UI
- La interfaz de usuario convierte el dominio en modelos de interfaz de usuario
Si se siguió DTO, DAO devolvería un DTO, no la Entidad. Después de leer un poco, parece que DTO se ha vuelto ligeramente difunto ya que (al menos en Java) las entidades se han convertido en POJO anotados, lo que significa que su huella de memoria se ha vuelto muy pequeña.
¿Es este el caso, o deberían usarse DTO para encapsular completamente los objetos de dominio dentro de la capa DAO y, si este es el caso, qué pasaría la capa de servicio al DAO?
¡Gracias un montón!
Una de las razones por las que creo que esta discusión surge repetidamente es porque parece un gran dolor de cabeza tomar un objeto con todos los datos que necesita y convertirlo en un objeto que se vea idéntico o casi idéntico al que estás entregando
Es verdad, es una PITA. Pero hay algunas razones (además de las enumeradas anteriormente) para hacerlo.
Pero puede administrarlo de manera bastante efectiva si encapsula la lógica de traducción en una colección de clases de convertidor
Eche un vistazo a lambdaJ donde puede hacer 'convertir (domainObj, toDto)', hay una sobrecarga de esto para usar con colecciones. Aquí hay un ejemplo de un método de controlador que lo utiliza. Como puede ver, no se ve tan mal.
fuente