Почему до и после I / U / D?
Если вы не хотите обновлять свой кэш напрямую, то достаточно сделать объект недействительным после того, как я / u / d предположил, что вы загружаете его в кэш при каждом промахе кэша. Если ваше объектное пространство достаточно велико, чтобы кэш-память могла занимать слишком много памяти, вам также понадобится некоторый механизм истечения срока действия (сделать недействительным через X минут или через X минут без доступа).
Или вы можете перейти на LRU (по крайней мере, недавно использованный), но это нелегко реализовать самостоятельно, если ваш ORM не поддерживает его изначально.