2010-03-01 66 views
4

我一直在研究连接池选项,并且我对Tomcat JNDI连接池方法的差异有些不清楚,与Spring/Hibernate相比解决方案相同。基于Tomcat JNDI和基于Spring/Hibernate DS的连接池有什么区别

虽然可以使用1,2来实现池化,但是我们使用Tomcat的具体应用会给我们带来更好的效果,因为我们有限制条件。

读一下,有一些建议到just stick with Spring/Hibernate

每种方法之间是否有值得一提的值得注意的区别?什么是其他人的个人经验(或两者兼有) - 我已经成功地使用Spring/Hibernate多年了。

+0

我可能是错的,但我认为,如果您使用JNDI连接池,它将在容器范围内(例如,在几个Web应用程序之间共享)。如果您在Spring上下文中定义连接池,它将在您的上下文中(例如它将在应用程序范围内)离开。我没有使用Tomcat + JNDI选项,所以我不能给出真正的好建议。 – 2010-03-01 21:28:38

回答

3

这两种方法是互补的,不是相互排斥的。在生产系统中,类似Spring/Hibernate的应用服务器会以javax.sql.DataSource的形式获取对连接池的引用,通常通过在JNDI树上查找。它通常被认为是管理连接池及其连接的应用服务器的“工作”。请记住,JNDI只是一个注册对象进行共享的地方,它本身就要求任何给定的连接池机制。应用程序服务器创建并配置池,应用程序(通过Spring/Hibernate /其他)使用它。

但是,应用程序自己配置和管理连接池也同样有效。这对于应用程序来说确实意味着更多的工作,但对应用程序服务器的依赖较少。

+0

够公平的,这是有道理的。现在假设我使用基于Tomcat的JNDI Pooling,我假设我需要关闭Spring中的池化配置,以便不在Tomcat的JNDI池中进行池化......? – 2010-03-01 23:00:21

+1

Spring没有连接池实现,它使用任何你给它的'DataSource'对象 - 如果这恰好是Tomcat通过JNDI提供的连接池,那么更好。 – skaffman 2010-03-01 23:53:16

+0

真的,对不起我的意思是休眠 – 2010-03-02 00:18:47

相关问题