Posso propor o apache empire-db. http://incubator.apache.org/empire-db/
Apache Empire-db é um componente de persistência de dados relacionais de código aberto que permite a definição de consulta dinâmica independente do fornecedor do banco de dados, bem como recuperação e atualização de dados simples e segura. Comparado com a maioria das outras soluções, como, por exemplo, Hibernate, TopLink, iBATIS ou implementações JPA, Empire-db tem uma abordagem consideravelmente diferente, com um foco especial na segurança do tempo de compilação , redundâncias reduzidas e produtividade aprimorada do desenvolvedor.
Um exemplo:
// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
.append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;