아무리봐도 맘에 안들지만 ^^;
예전에 PreparedStatement의 문제점이라고 생각되었던 부분이 있습니다.
?로 바인드 변수를 지정함으로써 같은 변수값임에도 여러번의 setXXX(int, XXX)을 해야만 한다는 것이죠.. 즉
String a = "value";
PreparedStatement ps = con.prepareStatement("select ?, ?, ?, ? from dual");
ps.setString(1, a);
ps.setString(2, a);
ps.setString(3, a);
ps.setString(4, a);
과 같이 같은 변수임에도 불구하고 4번의 값을 해야 합니다.
오라클의 경우, toad에서 다음처럼 쿼리를 사용할 수가 있습니다.
select :a, :a, :b, :b from dual
이걸 toad에서 수행하면 바인드 변수 a와 b에 대해, 값을 묻는 창이 뜨고 두번만 입력하면 되죠..
즉 위의 쿼리문에서 바인드 변수 a와 b가 있다는 걸 JDBC 차원에서 PreparedStatement가 알 수 있다면 좋을텐데.. 라는 생각을 했죠..
뭐 모든 DB가 저런식의 바인드 변수 처리를 하는 것은 아닐테니..
어떤 식으로 처리하면 될까 고민했었고..
그 결과 형태가 맘에 안들지만.. 일단 구현해봤습니다.
가장 좋은것은 아무리 봐도 JDBC 차원에서 저런 형태의 쿼리문을 수행해 주면 좋을거 같습니다.
Digester를 이용해서 xml 파일에서 쿼리를 읽어와.. 여러개의 쿼리를 저장하고 있고
그 중 하나의 쿼리를 가져와 새로 정의한 PreparedStatement에서 실행하는 형태입니다.
원하는 결과만 얻기 위해, 간략히 만들어져 있으니..
참고하셨으면 합니다.
제대로 하려면 xml의 형태를 새롭게 정의 해야 할듯 합니다 (바인드 변수의 타입 결정 등)
아무리 봐도 맘에 안듭니다 ^^;