Hibernate - 如何返回会话未跟踪的对象?

时间:2013-09-08 20:58:35

标签: performance hibernate

在Entity Framework中有一个名为AutoDetectChangesEnabled的选项,可以在执行批量操作时显着提高性能。

在Hibernate中是否有任何等价物,这可以在选择/插入数据库的许多记录时提高性能? 或者问题应该是,真的需要吗?

1 个答案:

答案 0 :(得分:1)

有很多选择:

  • Session.setDefaultReadOnly() - 看起来像AutoDetectChangesEnabled的直接等价物。但是,它仅禁用检测更改,但会启用会话高速缓存,因为其他功能需要它。因此,它只影响性能,但不影响内存消耗。

  • StatelessSession - 没有会话缓存(根本不保留对实体的引用),并且由于这个原因而缺少常规Session的许多功能

  • 解决此问题的另一种常见方法是在处理过程中定期clear()会话(例如,在每100个实体之后)(或手动evict()个别实体)。这种方法结合了以前选项的优点,因为它保留了Session的正常语义,同时在不再需要实体时丢弃了实体