使用 MyBatis 时如何在 PooledDataSource 和 dbcp 之间做出选择?
How to make a choice between PooledDataSource and dbcp when I work with the MyBatis?
我现在正在配置一个使用 spring 和 mybatis 的项目。
网上有很多例子告诉我应该使用org.springframework.jdbc.datasource.DriverManagerDataSource
作为数据源,但是mybatis使用PooledDataSource
作为数据源,这让我很困惑。所以,我阅读了 DirverManagerDataSource
的源代码,它只是一个模拟池连接。所以,我知道如何做出选择了。
但是,我很快就有了新问题。如何在PooledDataSource
和DBCP
之间做出选择?我看了PooledDataSource
的源码,也是一个简单的实现,但是这两个lib的代码太复杂了,我没有足够的时间看这些代码。
你能告诉我哪个更厉害吗?为什么?谢谢!
对于Spring和MyBatis,你用什么在功能上并不重要。只要有一个 DataSource
可用于配置,那么一切都会起作用。使用 Spring,通常最容易在 Spring 配置中创建 DataSource
并将其传递给 MyBatis SqlSessionFactoryBean
.
MyBatis 的 PooledDataSource
从性能的角度来看应该没问题,但它 synchronize
所以它 可能 有争用问题,因为并发性非常高。它可以在 Spring 中配置为普通 bean。
DPCP 具有更多功能(尤其是 JMX 监控),版本 2 应该比 DPCP v1 具有更好的性能。
如果您 运行 在容器中,您可能希望通过 JNDI 使用容器的池(参见 JndiObjectFactoryBean
)。如果您使用 Tomcat,它将拥有自己的 pool implementation。
我现在正在配置一个使用 spring 和 mybatis 的项目。
网上有很多例子告诉我应该使用org.springframework.jdbc.datasource.DriverManagerDataSource
作为数据源,但是mybatis使用PooledDataSource
作为数据源,这让我很困惑。所以,我阅读了 DirverManagerDataSource
的源代码,它只是一个模拟池连接。所以,我知道如何做出选择了。
但是,我很快就有了新问题。如何在PooledDataSource
和DBCP
之间做出选择?我看了PooledDataSource
的源码,也是一个简单的实现,但是这两个lib的代码太复杂了,我没有足够的时间看这些代码。
你能告诉我哪个更厉害吗?为什么?谢谢!
对于Spring和MyBatis,你用什么在功能上并不重要。只要有一个 DataSource
可用于配置,那么一切都会起作用。使用 Spring,通常最容易在 Spring 配置中创建 DataSource
并将其传递给 MyBatis SqlSessionFactoryBean
.
MyBatis 的 PooledDataSource
从性能的角度来看应该没问题,但它 synchronize
所以它 可能 有争用问题,因为并发性非常高。它可以在 Spring 中配置为普通 bean。
DPCP 具有更多功能(尤其是 JMX 监控),版本 2 应该比 DPCP v1 具有更好的性能。
如果您 运行 在容器中,您可能希望通过 JNDI 使用容器的池(参见 JndiObjectFactoryBean
)。如果您使用 Tomcat,它将拥有自己的 pool implementation。