desculpa a ignorancia mas o que seria relacionamentos do tipo LAZY?
obrigado e fiquem com DEUS
desculpa a ignorancia mas o que seria relacionamentos do tipo LAZY?
obrigado e fiquem com DEUS
Significa que ao invés de carregar todo o grafo de uma só vez, carrega sob demanda.
seria como o PacketRecords do TClientDataSet no Delphi???
Alex, eu não conheço esse recurso do Delphi. Vou tentar explicar de uma forma simples.
Suponha que você tenha uma classe chamada Pessoa que tem dentro dela uma lista de telefones. Se o relacionamento for do tipo LAZY, ao carregar um objeto do tipo Pessoa, os telefones não serão carregados inicialmente. Quando for necessário utilizá-los ai sim serão carregados. Passando para código, quando você der um getTelefones() ai sim a ferramenta de ORM vai fazer o select por trás dos panos para carregar os telefones.
Existe uma certa confusão.
Não ter lazy loading, seria carregar um objeto Carro e no mesmo instante puxar todas as suas dependencias do banco, de forma que ele fique completo.
Então se o Carro tem um Motor que tem 1000 peças, tudo isso (motor + pecas) vai ser carregado do banco ao mesmo tempo, o que na maioria dos casos não faz sentido.
Acho que isso é Eager loading. Lazy loading é só carregar dependencias quando elas forem realmente necessárias.
Agora existe lazy loading automático, que o Hibernate faz e o lazy loading manual, que vc (desenvolvedor) faz.
lazy loading automático: qualquer chamada a um getter vai disparar o lazy loading…
lazy loading manual: vc (desenvolvedor) deve saber quando e aonde as dependencias serão necessárias, e carregá-las na mão
Acho (opinião pessoal minha, não é verdade absoluta) que para modelos simples de até 2 ou 3 níveis no máximo (carro contem motor contem pecas), lazy loading automático não faz falta.
Para modelos mais complexos, com grafos de objeto complexos, pode ser uma mão na roda.
Tem também como tentar programar um lazy loading automático nas suas entidades:
private Motor motor = null;
private int motor_id;
// desconsiderando sincronizacão...
public Motor getMotor() {
if (motor != null) return motor;
motor = loadFromDB(motor_id);
return motor;
}
Mas aí se vc tiver muitas entidades e muitos relacionamentos, melhor deixar esse trabalho por conta do framework de ORM mesmo.
humm…é sim mais ou menos parecido com o recurso PacketRecords do Delphi
mas outra pergunta tem como eu limitar os registros que serão carregados tipo
seu tenho uma lista de 500 telefones em uma JTable
mas só vou mostras os 10 primeiros telefones na JTable de acordo com o usuario vai navegando por ela
o provider vai solicitando novos pacotes de 10 até carregar tudo na memoria??? tem como fazer isso???
pergunto isso por que tenho esse recurso no delphi e é uma mão na roda quando vamos carregar tabelas muito grande, podemos programar para que ele faça solicitações 1, 2, 3…N registro por vez