Oracle データベースへの JDBC 呼び出しを必要とするプロジェクトに取り組んでいます。SpringJDBC で動作するように UCP プーリングをセットアップしました。次のように実行しているかなり単純なクエリがあります...
SELECT * FROM TABLE WHERE ID IN (:ids)
このクエリを設定するための私のJavaコードは次のようになります...
NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(datasource);
Map<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("ids", Arrays.asList(idArray));
List<Result> results = template.query("SELECT * FROM TABLE WHERE ID IN (:ids)",
paramMap, new ResultRowMapper());
配列に id が 1 つしかない限り、これはすべて正常に実行されます。2 番目の ID を追加すると、クエリの実行に 5 分近くかかります。正確なクエリを取得して SQLDeveloper で実行すると、0.093 秒かかります。
私のコードまたは構成で何かがひどく間違っているに違いありません...誰かアイデアはありますか?
編集:
Spring NamedParameterJdbcTemplate の使用を取り除き、まっすぐな Jdbc を使用したところ、すべてがうまく機能しているようです。NamedParameterJdbcTemplate の動作が異なるのは何ですか?