JTASessionContext currentSession()

通过SessionFactoryImplementor(factory)取得事务管理(transactionManager)和事务(txn)
创建一个事务标识符(txnIdentifier),如果设置里面事务查找为null,赋值txn,否则赋值设置里面事务查找中的事务标识符,通过txn取得
Session currentSession
通过标识符在map中取得当前session并赋值给currentSession
如果session为null,就创建一个,同TreadLocal
把txn注册成同步,在编译后移除标识符
将currentSession放入map,key为txnIdentifier
注:map被实例化了

不解:
private transient Map currentSessionMap = new Hashtable();
每次都是创建一个新的实例化currentSessionMap 为什么还要从中取session

ManagedSessionContext的currentSession()
直接从本地线程中取map,如果没有,就在本地线程中设置一个
map.get(factory)取得currentSession,然后返回
无,则记入日志

你可能感兴趣的:(session)