Quickly scanned this libarary, MetaModel, looks like it provides a useful domain model for databases, e.g. Database, Schema, Table, Column, Index etc. Its a pain querying/manipulating this information from JDBC. It also abstract different types of database, e.g. sql, csv.