Tengo una duda respecto al uso de DTOs. En el ejemplo, se usa un record llamado SerieDTO para exponer datos de una entidad llamada Serie, ocultando campos como id o la lista de episodios, y esto se transforma directamente desde el controlador usando lambdas y streams.
Mi pregunta es múltiple:
¿Por qué no se explica con más profundidad qué es un DTO y por qué no conviene exponer directamente las entidades JPA en una API REST?
¿No sería mejor práctica separar esta lógica de transformación en una clase Mapper para mantener el principio de responsabilidad única? ¿O incluso utilizar una herramienta como ModelMapper o MapStruct?
¿Por qué se eligió record para representar el DTO? ¿Es solo por concisión o porque es inmutable? ¿Cuáles serían sus limitaciones si en el futuro el DTO tuviera lógica adicional?
¿Se considera buena práctica hacer toda la lógica de mapeo a DTO directamente dentro del controlador en aplicaciones más grandes?
Agradezco mucho cualquier aclaración. Me interesa comprender no solo el cómo, sino el por qué de estas decisiones, especialmente en términos de buenas prácticas de arquitectura y mantenibilidad del código.
Gracias