...
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
//Como hemos visto, para pasar un solo objeto de entidad a DTO o viceversa disponemos del constructor correspondiente. //Para todos los objetos de una lista a su otra forma, podríamos hacerlo con un for sin problemas, pero podemos hacerlo de una forma más simple utilizando expresiones lambda. //A continuación tenemos un ejemplo con ambas formas de hacerlo, y podemos ver que el código queda más breve utilizando la expresión lambda: final List<AlumnoTitulacion> lista = alumnoTitulacionRepository.findAll(); // Con un for final List<AlumnoTitulacionDTO> listaDTOfor = new ArrayList<AlumnoTitulacionDTO>(); for(AlumnoTitulacion x : lista) { listaDTOfor.add( new AlumnoTitulacionDTO(x) ); } // Con una expresión lambda final List<AlumnoTitulacionDTO> listaDTOlambda = lista.stream().map( x -> new AlumnoTitulacionDTO( x ) ).collect( Collectors.toList() ); //Se pueden usar las dos formas indistintamente, según la forma que se prefiera. |
ModelMapper
Una herrramienta que nos puede simplificar la conversión entre entidades y DTOs es ModelMapper. Es posible mapear los objetos complejos, es decir, los que tienen otros tipos anidados. Para utilizarlo, primero tenemos que declarar el bean en nuestro SecurityConfig.java, incluyendo la configuración de la estrategia de matching para que, como hemos dicho, se pueda hacer el mapeo complejo:
...