![](/img/trans.png)
[英]Tomcat 8 - Maven + Spring + Hibernate - Error with oracle datasource
[英]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的持久性代码都应起作用。
使用独立的连接池,例如C3P0或DBPC 。 就个人而言,我会选择性能比DBCP更好的C3P0。 在Spring论坛上了解c3p0与dbcp的关系 ,以及前面关于SO的问题 。
如果一个应用程序的每个实例都将创建自己的数据源副本,并且每个数据源可以有5个打开的连接,那么我们会得到什么?
连接总数=应用程序实例数x 5
从Hibernate的角度来看,使用哪种数据源实现有什么区别?
没有区别。 Hibernate将使用从Spring获得的连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.