一尘不染

即使不调用持久化,JPA /休眠也会保存吗

hibernate

em.getTransaction().begin();

StringData sd = em.find(StringData.class, key);
System.out.println("Old value: " + sd.getData());
sd.setData(newValue);
// em.persist(sd);

em.getTransaction().commit();

如您所见,我没有调用persist,它已经被注释掉了,因为我先是干运行这段代码。但是,事实证明它不是很干。检查数据库后,我发现数据已更改(幸运的是,这是一个测试数据库)。

显然,我对Hibernate / JPA的理解是有缺陷的。并非persist总是需要打电话来更改数据吗?如果没有,保存什么东西的规则 什么?


阅读 225

收藏
2020-06-20

共1个答案

一尘不染

是的,如果检测到任何更改,则在完成刷新(也使用提交完成刷新)后保存托管实体,这称为脏检查。

2020-06-20