当连接从池中检入和检出时,需要切换数据库。例如,会话X需要接收到数据库A的连接,而会话Y需要接收到数据库B的连接。HikariCP - 在连接检入和从连接池检出时动态设置连接的数据库
我可以使用连接自定义程序与C3P0
一起执行此操作。它调用方法onCheckIn
和AbstractConnectionCustomizer
onCheckOut
,所以我可以这样做:
public class MyConnectionCustomizer extends AbstractConnectionCustomizer {
@Override
public void onCheckOut(Connection c, String parentDataSourceIdentityToken) throws Exception {
if (something) {
c.setCatalog("some database name");
}
}
@Override
public void onCheckIn(Connection c, String parentDataSourceIdentityToken) throws Exception {
c.setCatalog("some other database name");
}
}
我想切换到HikariCP,但它调用IConnectionCustomizer
的customize
方法只有一次,在连接被创建时, 。那么,我怎样才能实现这样的功能呢?
您可能会发现很多用例,特别是SaaS市场产品方面的用例。你可以看看: https://docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns – 2018-01-29 07:52:37