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