从数据库加载实体时,该实体就是“托管实体”。如果更改“托管实体”(并在以后提交事务),则无需显式保存它们。(这是“托管”的意思。)
但是Hibernate不会立即更新数据库,而是将等待直到:
- 您提交交易
- 您调用
EntityManager.flush
或 - 您执行一些数据库查询或通过Hibernate保存!(当您绕过Hibernate并例如通过纯JDBC / Spring JDBC模板执行查询时,您需要先调用
EntityManager.flush
,否则,您可能看不到未喷射刷新的数据
这就是您观察到的:
- 1)您加载了一些实体,因此它们成为托管对象
- 2)您修改它们,但hibernate仍然不执行sql更新
- 3)您查询某个实体或保存一个实体,hibernate刷新更改



