我提到了许多文章,但我仍然不清楚session.clear在hibernate中执行什么.
根据我到目前为止所遇到的情况,当我们使用批量保存/更新时如下所示:
Session session = SessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Employee employee = new Employee(.....);
session.save(employee);
if( i % 50 == 0 ) { // Same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
Run Code Online (Sandbox Code Playgroud)
sesion.flush(); 用于刷新会话强制Hibernate将Session的内存状态与数据库同步.
题
1.冲洗会议结束后,为什么有必要办session.clear()?真的需要吗?
2.会session.clear()执行提交操作吗?
3.如果session.clear()逐出所有加载的对象,执行提交和回滚操作时内部会发生什么?
我在SpringBootApplication中实现了缓存,如下所示
@SpringBootApplication
@EnableCaching
public class SampleApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SampleApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
Run Code Online (Sandbox Code Playgroud)
这绝对是正常的.
但是要实现缓存,应该定义一个必需的CacheManager/Cacheprovider.没有定义任何cacheManager也我的应用程序工作正常.
是否有Spring定义的默认缓存管理器?Spring文档说Spring Boot自动配置一个合适的CacheManager.
那么如果我们不定义CacheManager会使用什么呢?