最近在研究 spring 源代码 先研究的第一个问题 session 是 怎么关闭的...
session.clear(); ?什么意思
public static void releaseSession(Session session, SessionFactory sessionFactory) {
if (session == null) {
return;
}
// Only close non-transactional Sessions.
if (!isSessionTransactional(session, sessionFactory)) {
closeSessionOrRegisterDeferredClose(session, sessionFactory);
}
}
这个方法 中 isSessionTransactional 是干什么?
static void closeSessionOrRegisterDeferredClose(Session session, SessionFactory sessionFactory) {
Map> holderMap = deferredCloseHolder.get();
if (holderMap != null && sessionFactory != null && holderMap.containsKey(sessionFactory)) {
logger.debug("Registering Hibernate Session for deferred close");
// Switch Session to FlushMode.MANUAL for remaining lifetime.
session.setFlushMode(FlushMode.MANUAL);
Set sessions = holderMap.get(sessionFactory);
sessions.add(session);
}
else {
closeSession(session);
}
}
closeSessionOrRegisterDeferredClose 方法 和 holderMap.containsKey ?
希望大侠不 吝赐教 ...