缓存配置为缓存大于 1 和 PoolingConnectionFactory 之间有什么区别吗?
我在各种项目中都见过,我想了解选择其中之一背后的理由。
这实际上取决于您的用例。
bittronix工厂将连接池化,并为每次使用提供不同的连接(并将其返回到池中)。
CachingConnectionFactory
使用单个连接并缓存会话、生产者和使用者。
这确实是一个奇怪的问题。您需要 XA 吗?如果是,那么你别无选择,只能使用PoolingConnectionFactory。你不需要 XA?然后不要打扰Bitronix,而使用CachingConnectionFactory。
如果你使用像Bitronix(或Atomikos)这样的可插拔XA事务管理器,请使用它们的池实现而不是Spring的,因为它们执行额外的操作,例如在XA事务中自动登记资源。
Bitronix池是:
- bitronix.tm.resource.jdbc.PoolingDataSource for JDBC
- bitronix.tm.resource.jms.PoolingConnectionFactory for JMS
值得一看的是Bitronix测试用例,以获取有关如何设置池的示例:
https://github.com/bitronix/btm/blob/master/btm/src/test/java/bitronix/tm/mock/JmsPoolTest.java
https://github.com/bitronix/btm/blob/master/btm/src/test/java/bitronix/tm/mock/JdbcPoolTest.java