hibernate的一级缓存为session,是内置缓存,不可卸载。
二级缓存为sessionFactory,包含了内置缓存和外置缓存,sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查询方法 都会从中受益。当查询时候,会首先查询一级缓存中的数据,如果没有再去二级缓存的查找。如果还没有就去数据库中查询。当使用hibernate对数据库数据做增删改操作时,同时会更新缓存。当然这也包括二级缓存!
mybatis的一级缓存为sqlsession。一级缓存的设计是每个sqlsession单独使用一个缓存空间,不同的sqlsession是不能互相访问数据的。当然,在sqlsession关闭后,其中数据自然被清空。
二级缓存是namespace作用域。这里的原则是,如果开启了二级缓存,那么在关闭sqlsession后,会把该sqlsession一级缓存中的数据添加到namespace的二级缓存中。
一般来说,JDBC不会缓存数据的,除非是很特殊的JDBC驱动。