Hibernate是否缓存新创建的实例

时间:2019-05-18 15:31:11

标签: java hibernate

在学习HIbernate时,我在Hibernate official documentation中遇到了这一点:

  

这是因为Hibernate将所有新插入的Customer实例都缓存在会话级缓存中。

我知道Hibernate会缓存检索到的实体,但是它也缓存新实体吗?

编辑:新创建的实例,例如<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> </resources>

1 个答案:

答案 0 :(得分:1)

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
    Customer customer = new Customer(.....);
    session.save(customer);
}
tx.commit();
session.close();

这里的缓存意味着在session.save(customer)之后,客户仍将位于session对象中,并且在关闭session之前不会被删除。

这意味着,如果在关闭session.get(Customer.class, id)之前使用session获取具有已保存ID的客户,则不会导致SQL SELECT从数据库检索该客户,而只是返回session中缓存的客户。