JDBC Annotations

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.

Opa, legal

assim q eu tiver um tempo vo dar uma olhada

[quote=zoren]Opa, legal

assim q eu tiver um tempo vo dar uma olhada[/quote]

gostei do esquema, bem interessante

não testei ainda

mas notei que ele preenche os bean com os dados, legal

acho legal tbm caso não exista um bean que satisfaça aquela consulta, ele retorno um list com um map com o nome das colunas como chave e o valor do campo

ai vai a minha sugestão

parabéns cara

edit:

cliquei em citar por engano, era pra ser o editar