Fala galera,
Montei aqui algumas classes utilitárias para facilitar o uso de JDBC. A idéia é a utilização das mesmas em projetos bem pequenos, em que não se queira usar algum framework ORM.
Montei hoje, então ainda faltam alguns retoques, mas vou disponibilizar para vcs esperando o retorno de opiniões e sugestões de melhoria, para quem sabe com algumas melhorias, disponibilizá-lo como um pequeno framework da comunidade…
A idéia é mapear o resultado das queryies no próprio objeto:
@JDBCQueryies(queries={ //declarar queryies que retornam resultado neste objeto
@JDBCQuery(name="all", query="select * from TABELA"),
@JDBCQuery(name="codigo", query="select CAMPO1 from TABELA where CAMPO1 = :codigo:", ignoreAttributes={"modalidade"})
})
public class Tabela {
@JDBCResultField(name="CAMPO1") //declarar campos de resultado que serão mapeados via reflection
private Integer codigo;
@JDBCResultField(name="CAMPO2")
private String modalidade;
//getters e setters
}
e a partir de tais annotations executar consultas, updates e deletes sem ter mto trabalho, precisando apenas de utilizar a classe utilitária que contém os reflections necessários.
um exemplo de utilização:
Tabela tabela = new Tabela();
tabela.setCodigo(1);
JDBCExecute jdbc = new JDBCExecuteImpl();
try {
Collection c = jdbc.getResults(connection, Tabela.class, "codigo", tabela);
/* o jdbcExecute recebe um connection para conexão com o banco,
* o tipo de objeto retornado,
* qual a query declarada (@JDBCQueryies) será executada
* e por último (opcional) o objeto que será substituído em parâmetros de query
* (nas queryies palavras que contém : no início e fim (ex.: :codigo:)
*/
for (Object object : c) {
Tabela jdbcModalidade = (Tabela) object;
System.out.println("Código: " + jdbcModalidade.getCodigo());
System.out.println("Modalidade: " + jdbcModalidade.getDescricao());
}
} catch (JDBCAnnotationException e) {
e.printStackTrace();
}finally{
connection.close();
}
Com consultas simples, funciona… porém ainda precisa de um amadurecimento para consultas mais complexas e implementação posterior de retorno de cursores e etc.
Está anexo, o projeto com tudo isso funcionando (bastando apenas criar uma tabela no banco)…
Vlw.