Я знаю, что разработчики JPA (например, Hibernate) отслеживают объекты, присоединенные к контексту постоянства, и если любое поле любого объекта изменяется, то изменение обновляется в базе данных.
Мой вопрос: как JPA отслеживает изменения? Сущности не перехватываются (через прокси-серверы), поэтому, конечно, это не происходит через перехват «сеттеров», как это делается?
Я заинтересован в деталях реализации этой функции "грязной проверки".