帮忙梳理连接池一些概念-涉及tomcat、hibernate及spring

才接触连接池的感念。看了一些东西,有点概念但还有很多不清楚。
1,在配置hibernate时,有过如下配置:

100

这里设置的是连接池的大小。那么是否可以认为,hibernate的session-factory本身就是一种连接池的实现呢?
2,配置spring,我们在sessionFactory中会注入datasource,而这个datasource是已经配置了相关参数的连接池,
如果问题1的答案是肯定的,那么不直接在sessionFactory的属性中配置连接池信息而要在datasource中配置在注入到sessionFactory呢?
3,比如我们配置的最大连接数,这个是指数据库的所有最大连接数还是我们本wen应用和数据库的最大连接数(应为还有可能有其他主机其他应用可能连接同一数据库)?我认为是后者,这个算问问大侠来确认一下。
4,也可以在tomcat中配置datasource实现连接池,那它和在某个具体的web应用中配置(比如某项目在使用时在applicationContext.xml中配置)的区别是什么?我猜想在tomcat中配置是这样的结果:当tomcat容器有多个web应用时,他们若都是用了tomcat的datasource,则共享该连接池。而在某个具体的web应用配置的连接池,只对该具体web应用有效。不知对不,向大侠求证一下。
感激不尽~~~

3个回答

我来说说我的看法,不一定都对.请LZ自己斟酌

[quote]1,在配置hibernate时,有过如下配置:

100

这里设置的是连接池的大小。那么是否可以认为,hibernate的session-factory本身就是一种连接池的实现呢? [/quote]
Hibernate中配置的Session-factiory实际上是一种对象池,只不过他有操作datasource的能力而已.个人认为不能说他是连接池,不过设计思路是一样的,高成本对象集中管理.

2.[quote]配置spring,我们在sessionFactory中会注入datasource,而这个datasource是已经配置了相关参数的连接池,
如果问题1的答案是肯定的,那么不直接在sessionFactory的属性中配置连接池信息而要在datasource中配置在注入到sessionFactory呢? [/quote]
两者是不一样的吧.sessionFactory有管理datasource的能力罢了.个人感觉sessionFactory中优先级要高于datasource本身.
如果同时设定的话,最终的连接池会有初始化几个数据库连接呢? 我觉得是sessionFactory的设定.

3.[quote]比如我们配置的最大连接数,这个是指数据库的所有最大连接数还是我们本wen应用和数据库的最大连接数(应为还有可能有其他主机其他应用可能连接同一数据库)?我认为是后者,这个算问问大侠来确认一下。 [/quote]
我认为是本web应用的最大连接数.数据库的最大连接数轮不到应用它的使用者来决定吧!

[quote]4,也可以在tomcat中配置datasource实现连接池,那它和在某个具体的web应用中配置(比如某项目在使用时在 applicationContext.xml中配置)的区别是什么?我猜想在tomcat中配置是这样的结果:当tomcat容器有多个web应用时,他们若都是用了tomcat的datasource,则共享该连接池。而在某个具体的web应用配置的连接池,只对该具体web应用有效。[/quote]
Tomcat的datasouce也是有指向性的,比如Resource name="jdbc/ JNDI名字".这个就是标示,想用也得报对名号才可以.所以答案就明显了,和web里面配置是一致的,当然同一数据源配置可以给多个应用用这个是没问题的.

谢谢LZ的好问题, :D

1.[color=red]这里设置的是连接池的大小。那么是否可以认为,hibernate的session-factory本身就是一种连接池的实现呢? [/color]
是啊,可以把JDBC 的 connnection 看成 hibernate session ,只是封装不同而已,还有一些设置.

2.datasource 是 jdbc connection pool,
sessionFactory 是 hibernate session pool, session 封装了 connection

3.你们应用项目与数据库,建立连接的最大数

4.spring 中和tomcat 是一样的,但是spring 配置的只能给本项目用,而tomcat可以给多个项目用.

1.hibernate 本身就封装了数据库连接啊
2.展示不知道,
3.这问题还没有深入研究过,因为现在没怎么用到连接池,但是我想应该是每一个客户端与数据库连接的最大数吧!你自己可以测试看看啊。
4.你得想法是完全正确的!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问