Кэш Hibernate L1 примерно эквивалентен транзакции БД, когда вы работаете в режиме изоляции с повторяющимся чтением. По сути, если вы читаете / записываете некоторые данные, при следующем запросе в контексте того же сеанса вы получите те же данные. Кроме того, в рамках одного и того же процесса сеансы работают независимо друг от друга, что означает, что 2 сеанса просматривают разные данные в кэше L1.
Если вы используете повторяемое чтение или меньше, то вам не стоит беспокоиться о кеше L1, так как вы можете столкнуться с этим сценарием независимо от ORM (или без ORM).
Я думаю, что вам нужно думать только о кеше L2 здесь. Кэш L2 - это то, что хранит данные и предполагает, что только hibernate осуществляет доступ к БД, что означает, что если в БД произойдут какие-то изменения, hibernate может не знать об этом. Если вы просто отключите кэш L2, вы будете отсортированы.
Дальнейшее чтение - Краткое описание уровней кэша гибернации