繁体   English   中英

Tomcat Web应用程序的DataSource,Spring和Hibernate

[英]DataSource for Tomcat web app, Spring and Hibernate

Web应用程序在Tomcat上运行。 数据源使用Spring配置进行配置,并由Hibernate使用。

如果我们不能使用JNDI,您建议使用什么作为数据源?

org.springframework.jdbc.datasource.DriverManagerDataSource可以吗? 它不是很好,但是真诚的说,它可以在生产服务器上使用,对吗? 重新连接太频繁只会让您有些头疼。

另外,我们可以使用来自Apache的BasicDataSource。 当然好多了,但这是问题所在。 如果我们不使用JNDI,那么:

如果一个应用程序的每个实例都将创建自己的数据源副本,并且每个数据源可以有5个打开的连接,那么我们会得到什么?
Num_of_running_apps * Num_of_max_active_connections =该用户在数据库上的最大活动打开连接数?



第二个问题:从Hibernate的角度来看,使用哪种数据源实现有什么区别? 不管什么数据源完美且稳定地运行,它都能工作吗?

如果我们不能使用JNDI,您建议使用什么作为数据源?

当然不是正式版中的org.springframework.jdbc.datasource.DriverManagerDataSource ,此类不是javadoc中所写的连接池:

注意:此类不是实际的连接池; 它实际上并不合并连接。 它只是对成熟的连接池的简单替代,实现了相同的标准接口,但是在每个呼叫上都创建了新的Connections。

对于J2EE容器外部的测试或独立环境很有用,可以作为相应ApplicationContext中的DataSource bean,也可以与简单的JNDI环境结合使用。 假定使用池的Connection.close()调用将简单地关闭Connection,因此任何可识别DataSource的持久性代码都应起作用。

使用独立的连接池,例如C3P0DBPC 就个人而言,我会选择性能比DBCP更好的C3P0。 在Spring论坛上了解c3p0与dbcp的关系 ,以及前面关于SO的问题

如果一个应用程序的每个实例都将创建自己的数据源副本,并且每个数据源可以有5个打开的连接,那么我们会得到什么?

连接总数=应用程序实例数x 5

从Hibernate的角度来看,使用哪种数据源实现有什么区别?

没有区别。 Hibernate将使用从Spring获得的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM