我正在将JDBC(以及JDBI的一部分)与池化连接一起使用。使用
创建数据源PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource(); pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL(dbCfg.connectionString());
pds.setUser(dbCfg.username());
pds.setPassword(getDbPassword(dbCfg));
然后通过pds.getConnection()
获得JDBC连接,或者通过Jdbi.create(pds);
获得JDBI(我已经简化了环境处理,等等)
我们在Oracle中使用自定义数据类型。因此,我需要定义类型映射。在给定的连接上,我可以使用
Connection conn = pds.getConnection(); // or jdbi.getConnection()
Map<String, Class<?>> newMap = conn.getTypeMap();
newMap.put("SCHEMA.MYOBJ", MyObj.class);
conn.setTypeMap(newMap);
但是,每次这样做似乎效率低下。如果该连接是共享的并且可以重复使用,那么我应该可以设置一次。
是否可以在数据源上进行设置,以便它创建的任何连接都自动添加我的映射?还是告诉什么是“新”连接?
我看到数据源上有setConnectionFactoryProperties,这听起来可能很有帮助,但看不到如何在其中添加哈希映射或有效的键