Кэш первого уровня не распределяется между транзакциями. За исключением случаев с расширенными контекстами постоянства, наиболее распространенный шаблон заключается в том, что каждая транзакция связана с одним сеансом/постоянством-контекстом и имеет собственный кеш первого уровня, который отслеживается только для этой транзакции.
На самом деле «грязное чтение» - это свойство транзакции базы данных, а не Hibernate в целом. Когда одна транзакция считывает изменения, сделанные другой транзакцией, которая еще не была зафиксирована, это называется грязным чтением. Опасно и необычно использовать этот тип транзакций, потому что считанные данные могут быть отброшены.
любые сделанные изменения сначала записываются в постоянный объект, что делает его грязным.
В приведенной выше строке вы говорите, что в объект были внесены изменения (но изменения еще не отправлены в базу данных, потому что ORM, такие как Hibernate, задерживают сброс sql до конца транзакции). Таким образом, объект после изменения теперь грязный, но этого нельзя сказать о транзакции, поскольку в базу данных не было отправлено никаких операций вставки/обновления/удаления. Говоря о Hibernate - причина, по которой он считается "грязным" с точки зрения приложения, заключается в том, что объект представление данных, прочитанных спящим режимом, может быть изменено с помощью сеттеров, и поэтому объект или данные становятся «грязными», которые необходимо сбросить в базу данных в конце транзакции, или приложение может фактически решить не фиксировать. Основная задача Hibernate — отслеживать это измененное («грязное») состояние и в конце транзакции генерировать соответствующую вставку/обновление/удаление. Таким образом, эта грязь представляет собой разницу между состоянием, изначально прочитанным, и состоянием после внесения изменений, если таковые имеются в одной и той же транзакции.
person
Shailendra
schedule
20.11.2014