Consider introduction of simple switch over different query types like org.infinispan.loaders.jdbc.TableManipulation. The current impl will fail e.g. on Oracle.
Here is also a good source for sql datatypes: http://www.castor.org/ddlgen-mapping.html
getContentLength, at storing the blob, store also the size. query it in this method.
Database.tableExists change select * at least to select count(1) or count ( * ). Faster would be to try to create a table and check the errors.
In case of non-JNDI: connection opened, but not closed
Configuration of table name prefix (When using one DB account for different products, its always better, that tables have component-related prefixes.)