JDBC is not used in OpenACS, nor would it provide the real level
of abstraction that we need. Note that JDBC is Java-specific
anyways, but assuming it weren't, it would still not fulfill our
needs.
Sometimes (often, even) queries need to be completely rewritten
from Oracle to PG (or from PG to Oracle), especially when stored
procedures are involved. Since the strength of OpenACS 4.x lies
in part in its strong use of stored procedure abstractions, we
need something that will recognize the DBMS used and properly
dispatch to the right query, which often cannot be automatically
generated.
Our query dispatcher allows you to store all of your queries in
XML format, separate from the Tcl code. Thus, you can have a
DB expert come in and optimize queries at any time, fix them up
for a new DB, etc.. without ever touching the code logic.