我知道 JPA 实现者(如 Hibernate)监视附加到持久性上下文的实体,如果任何实体的任何字段发生更改,则更改会更新到数据库。
我的问题是,JPA 如何跟踪更改?实体不会被拦截(被代理),所以可以肯定它不是通过“setter”的拦截,它是如何完成的?
我对这个“脏检查”功能的实现细节感兴趣。
他们做的事情是完全依赖于实现(即 JPA 规范在这里对你没有一点帮助)。
一些实现(例如 DataNucleus、OpenJPA)使用字节码增强,并且能够有效地管理自加载以来哪些字段是脏的(并且不需要保留原始字段值的快照)。
其他实现必须与之前的某个值进行比较(或通过与数据存储进行比较)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)