Para que seja possível o desenvolvimento de uma ferramenta de ORM é necessário um conhecimento de Annotations e de Reflection.
As anotações neste caso são utilizadas para fazer a configuração dos atributos por parte de quem utiliza a ferramenta, fazendo com que a ferramenta interprete essa anotação e se comporte de acordo com a anotação utilizada. Para que seja mais simples entender vamos ver um exemplo: Supondo que quem está utilizando a ferramenta tenha um objeto Pessoa e dentro dele tem um outro objeto Endereco, os dados desse objeto podem ser salvos tanto em uma tabela endereco ou na própria tabela pessoa, então cria-se uma anotação para determinar se o endereço dever ser salvo na mesma tabela com os dados das pessoas ou não.
public class Pessoa {
@PrimaryKey
public Integer id;
public String nome;
@Embutido
public Endereco end;
.
.
.
}
Como o nosso colega de curso Bruno já fez uma post sobre anotações não irei me extender neste assunto.
É necessário a utilização desta tecnologia, pois a ferramenta de ORM deve ser genérica para funcionar com qualquer tipo de objeto, com este recurso a ferramenta recebe um objeto como parâmetro sem saber quem é ele e descobre seus atributos e suas configurações através da reflexão, assim possibilitando o tratamento de cada atributo de acordo com as suas configurações. Como exemplo vou mostrar uma função que recebe um objeto genérico como parâmetro e descobre qual atributo é chave primária e o retorna.
private Field primaryKey(Object objeto){
Field[] campos = objeto.getClass().getDeclaredFields();
for (Field campo : campos) {
if(campo.isAnnotationPresent(PrimaryKey.class))
{
return campo;
}
}
return null;
}
Era wilson pessoal...
Nesse link tem mais alguns exemplos sobre reflection em java
ResponderExcluirhttp://prmjuniorblog.blogspot.com.br/2012/08/reflection-em-java.html