Creating 100 JPA entities, then 100 DTOs, 100 data repositories and 100 mappers is what people usually do when developing applications with pure Spring Boot and React/Angular/etc.
The goal of this tedious work is to provide a presentation data model separate from the persistence model. This approach has its pros and cons and the balance shifts depending on the application requirements.
If your application displays and works with data mostly in the same structure as they are stored in the database, the persistence and presentation models will be almost identical. So there is little sense in separating them. This is the default scenario in Jmix - you define only the persistence model in JPA entities and they are directly used by your UI.
But if you need to display some data in a structure different from the database (which is defined by tables and JPA entities), you can create a DTO and map your persistent data to it using any custom logic. This way you can extend your data model with entities not directly mapped to the database.
Another use case for DTOs in Jmix is defining a model of data coming from some arbitrary storage, e.g. an external API. You can find examples of working with such data in the jmix-samples-2/external-data-sample project.
Regards,
Konstantin