Hibernate配置项hibernate.current_session_context_class默认值咨询
关于
hibernate.current_session_context_class的默认值 Hey there! 这个问题确实容易让人摸不着头脑,毕竟Hibernate官方文档里没把它的默认值明确写成一个固定字符串——这是因为它的默认值会根据运行环境自动推断,并不是一成不变的:
- 如果你在JTA容器环境(比如JBoss、WebLogic这类Java EE应用服务器)中运行Hibernate,默认的会话上下文是
jta; - 如果你在非JTA的独立环境(比如普通Java SE程序、Spring管理的非JTA数据源场景),默认会使用
thread作为会话上下文。
你看到的非官方旧网站说默认值是thread,其实只说对了一半——那是在非JTA环境下的情况,放到JTA容器里就不适用了。Hibernate这么设计是为了自动适配不同的部署场景,不用开发者手动配置就能贴合容器环境。
另外补充个小tip:如果需要强制指定某类会话上下文,直接在配置里显式设置hibernate.current_session_context_class为thread、jta或者自定义的实现类就行,这样就不会依赖自动推断的逻辑啦。
内容的提问来源于stack exchange,提问作者saralor
相关产品推荐
相关产品推荐

