答案 0 :(得分:9)
将Hibernate的Contextual Session
视为当前Session与用户Context的映射。
例如:单个事务可能就是这样的上下文,因此如果Hibernate Session的生命周期与此事务的生命周期相匹配,则Session可以称为上下文,其中单个事务定义了这样的context
。有时,这种特殊情况被标记为session-per-request
模型。
Hibernate接口CurrentSessionContext用于将当前会话(例如SessionFactory.getCurrentSession()
)映射到不同的上下文。该接口有3个实现:
JTASessionContext:当前会话由JTA事务跟踪和确定范围。此处的处理与旧的仅JTA方法完全相同。有关详细信息,请参阅Javadocs。
ThreadLocalSessionContext:当前会话由执行线程跟踪。有关详细信息,请参阅Javadocs。
ManagedSessionContext:当前会话由执行线程跟踪。但是,您有责任使用此类上的静态方法绑定和取消绑定Session实例:它不会打开,刷新或关闭会话
查看Hibernate文档的Architecture Current Session部分,了解更多“官方”详细信息。
答案 1 :(得分:1)
另一个非常好的链接,解释了Hibernate Contextual Session的概念