WebSphere中Hibernate 4.0.1连接池配置优先级及设置疑问
关于WebSphere数据源与Hibernate连接池配置的优先级问题
嘿,这个问题我刚好在WebSphere+Hibernate的项目里踩过坑,给你把逻辑理清楚:
首先给你明确结论:你完全不需要在Hibernate里配置connection.pool_size或者c3p0相关参数,WebSphere容器配置的数据源连接池设置优先级远高于Hibernate的连接池配置。
具体原因拆解:
- 当你在Hibernate中通过
hibernate.connection.datasource引用WebSphere上已配置的容器数据源时,Hibernate会直接复用WebSphere容器管理的连接池,它自己的内置连接池(由connection.pool_size控制)或者第三方连接池(比如c3p0)都会被自动禁用。 - WebSphere的数据源已经全权负责了连接池的生命周期管理:包括连接池大小、连接超时、连接回收、事务关联等核心特性,Hibernate只作为连接的使用者,不需要再重复配置连接池逻辑。
补充细节:
- 关于
connection.pool_size:这个参数是Hibernate自带的极简连接池(非常基础,不适合生产环境)的配置项,但只要你指定了容器数据源,这个参数就会被忽略,Hibernate不会启动自己的内置池。 - 关于c3p0:如果你之前有在Hibernate里配置c3p0的习惯,同样,当使用容器数据源时,Hibernate不会初始化c3p0连接池,所有连接都来自WebSphere的容器池。
正确的Hibernate配置示例
你的Hibernate配置只需要指向WebSphere的数据源即可,不需要任何连接池相关配置:
<!-- 引用WebSphere容器数据源 --> <property name="hibernate.connection.datasource">java:comp/env/jdbc/YourConfiguredDataSource</property> <!-- 配置对应数据库的方言 --> <property name="hibernate.dialect">org.hibernate.dialect.DB2Dialect</property> <!-- 其他ORM相关配置... -->
总结一下:完全信任WebSphere的数据源配置就好,连接池的大小、性能调优都在容器层面完成,Hibernate只专注于ORM映射和数据操作就够了。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

