Я знаю, что невозможно напрямую сериализовать функцию / анонимный класс в базу данных, но каковы альтернативы? Знаете ли вы какой-нибудь полезный подход к этому?
Чтобы представить мою ситуацию: я хочу наградить пользователя "значками" на основе его оценок. Поэтому у меня есть различные типы значков, которые можно легко определить, расширив этот класс:
class BadgeType(id:Long, name:String, detector:Function1[List[UserScore],Boolean])
Член-детектор - это функция, которая просматривает список результатов и возвращает true, если пользователь имеет право на значок этого типа.
Проблема в том, что каждый раз, когда я хочу добавить / отредактировать / изменить тип значка, мне нужно отредактировать исходный код, перекомпилировать все это и заново развернуть сервер. Было бы гораздо полезнее, если бы я мог сохранить все экземпляры BadgeType в базе данных. Но как это сделать?
Единственное, что приходит на ум, - это иметь тело функции в виде скрипта (например, Groovy), который оценивается во время выполнения.
Другой подход (который не включает базу данных) может заключаться в том, чтобы каждый тип значка помещался в банку, которую я могу каким-либо образом развернуть в горячем режиме во время выполнения, что, как я полагаю, может работать плагин-системой.
Что вы думаете?