Да как то первое в голову пришло использовать интерфейс, затем захотел узнать возможно ли это в принципе и не мог ответа найти. За совет с абстрактными классами спасибо! Теперь знаю что делать.
Поясните пожалуйста, что значит маппинг доменной модели в контексте вашего поста? Так же использую сервисный слой, подразумевая что он нужен для того, что бы не тащит в контроллер более сложные операции над entity чем просто запросы к репозиторию. Так же практикую преобразование объектов для передачи на фронт, в объекты To (конвертация полей в String или JSON, вы это имеете в виду?
Недавно реализовывал подобное. Строки чекаем галками - при чеке id строки (объекта в строке) залетает в массив в localstorage. Потом когда собираешься скачать реализуешь выборку объектов из базы по id в хранилище и куда то их сохраняешь (в моем случае это .csv файл)
Ну а по теме.. говорят и на JS в Node можно бэк запилить... (я не представляю как можно разрабатывать крупный проект на JS но ничего этому не мешает совершенно точно) Так что все инструменты у вас есть...