Это слишком долго для комментария.
Если это было «абсолютно неправильно», большинство баз данных не поддержали бы его. Хорошо, большинство баз данных поддерживают запятые в предложении FROM
, и я считаю, что это «абсолютно неправильно». Но поддержка JSON - это новая разработка, а не обратная совместимость «функции».
. Один очевидный случай: структура JSON - это просто BLOB, который передается обратно в приложение. Тогда нет дебатов, кроме того, накладные расходы на хранение JSON, что излишне многословно для структурированных данных с общими полями в каждой записи.
Другим случаем является случай «редких» столбцов. У вас есть строки со многими возможными столбцами, но они варьируются от строки к строке.
Другой случай - это когда вы хотите хранить «вложенные» записи в записи. JSON является мощным.
Если JSON имеет общие поля для записей, на которые вы хотите запросить, тогда вам обычно лучше помещать их в соответствующие столбцы базы данных. Однако данные сложны и есть место для таких форматов, как JSON.
Кэш владеет экземплярами Executor и CompletableFuture, поэтому он уже таким образом контролирует жизненный цикл задач загрузки.
blockquote>Это не так, в документации по
Caffeine
указано, что он использует предоставленные пользователемExecutor
илиForkJoinPool.commonPool()
, если ничего не указано. Это означает, что жизненный цикл по умолчанию отсутствует.Несмотря на то, что прямой вызов
GlobalScope
кажется неправильным решением, потому что нет причин жестко кодировать выбор. Просто предоставьтеCoroutineScope
через конструктор и используйтеGlobalScope
в качестве аргумента, пока у вас нет явного жизненного цикла для привязки кеша.