在学习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>
答案 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
中缓存的客户。