Dmitriy, I did a code review of the PR with Artem and I think I understood the need for two mappers. First, name mapper is used to map platform (Java, .NET, C++) class name to a common platform-independent type name. This name is used in SQL table name and it is also passed to ID mapper. ID mapper is used to resolve possible conflicts of default type IDs.
By default user will not need to configure anything if he uses solely Java or .NET. Mappers need to be configured if there is a tricky name conversion when platform interoperability is needed. Hope this makes sense. --AG