Ao invés de tentar automatizar cada possível consulta, o que inevitavelmente acaba levando a muita mágica e complexidade, o MentaBean te ajuda a construir suas SQL para que você tenha o controle da query. Em outros termos, é JDBC + SQL sem as partes repetitivas. Veja um exemplo:
Connection conn = getConnection(); PreparedStatement stmt = null; ResultSet rset = null; try { Post post = new Post(1); StringBuilder query = new StringBuilder(256); query.append("select "); query.append(session.buildSelect(Post.class, "p")); query.append(", "); query.append(session.buildSelect(User.class, "u")); query.append(" from Posts p join Users u on p.user_id = u.id"); query.append(" where p.id = ?"); stmt = conn.prepareStatement(query.toString()); stmt.setInt(1, post.getId()); // the two lines above could have been: // stmt = SQLUtils.prepare(conn, query.toString(), post.getId()); rset = stmt.executeQuery(); if (rset.next()) { session.populateBean(rset, post, "p"); User user = new User(); session.populateBean(rset, user, "u"); post.setUser(user); } } catch(SQLException e) { throw new BeanException(e); } finally { SQLUtils.close(rset, stmt, conn); }
Note que por possuirmos duas entidades diferentes (User e Post) na mesma consulta, nós devemos definir um alias para cada tabela. Para a tabela Posts escolhemos o alias "p" e para Users, "u". Se você usar somente uma bean na query, isto não é necessário. Simplesmente a boa e velha SQL sem as partes chatas do JDBC.