Senhores do conhecimento, ajudem um pobre trabalhador:
Preciso definir uma arquitetura com uma série de DAO´s e VO´s,
porém não tenho a privilégio de usar Java / Hibernate / Spring para fazer o lazy loading.
Vejamos os codigos:
public class Produto {
int id;
String nome;
Marca marca = new Marca();
public Marca getMarca() {
return marca;
}
}
public class Marca {
int id;
String nome;
}
public class ProdutoDAO {
Produto findByPrimaryKey(int id) {
String sql = "select * from produto where id = ?";
Produto produto = new Produto();
produto.setId(rs.getInt("id"));
produto.getMarca().setId(rs.getInt("id_marca"));
return produto;
}}
public class MarcaDAO {
Produto findByPrimaryKey(int id) {
String sql = "select * from marca where id = ?";
Marca marca = new Marca();
marca.setId(rs.getInt("id"));
marca.setNome(rs.getInt("nome"));
return marca;
}}
public class LazyTest {
public static void main(String[] xxx) {
Produto prod = new ProdutoDAO().findByPrimaryKey(10));
System.out.println(prod.getId());
System.out.println(prod.getMarca().getNome()); // aqui e somente aqui, teria que carregar automaticamente
}
}
Pois é, vai acabar fazendo parecido com o Hibernate. Ja que nao pode usar ele pelo menos da uma olhada como ele faz isso.
Da uma olhada na classe Hibernate, metodo “initialize” pra ver como o Hibernate faz o carregamento do “lazy” (esse metodo forca o carregamento de um mapeamento lazy=“true” é a maneira mais rapida de ver como ele faz isso) e nas interfaces HibernateProxy e PersistenteCollection pra ver como ele faz o “lazy$” propriamente dito.
Curiosidade! Por que você não tem o privilegio de usar o Hibernate?
Eu uma epoca tirei todos meus privilegios de usar qualquer framework para aprender a projetar bem. Moral da historia não terminei o projeto devido ao fluxo de atividades a fazer “no braço” e deixei de aprender a usar bons frameworks!
[quote=brunohansen]Curiosidade! Por que você não tem o privilegio de usar o Hibernate?
Eu uma epoca tirei todos meus privilegios de usar qualquer framework para aprender a projetar bem. Moral da historia não terminei o projeto devido ao fluxo de atividades a fazer “no braço” e deixei de aprender a usar bons frameworks![/quote]
Por que o projeto foi desenvolvido em Delphi, e preciso refatorar um pedaço dele.
Eu sei que existem frameworks para Delphi, mas não poderia usar.