Hibernate e collection, como carregar quando lazy="true"?

2 respostas
P

Pessoal, como eu faço pra carregar uma collection quando o lazy está configurado no mapeamento como true? (ou seja, modo preguiçoso ligado).

Alguem conhece um método genérico para isso?

meu mapeamento está sando bags;;;

o objeto Cliente tem 1 objeto conta, 1 lista de produtos comprados, 1 lista de orçamentos feitos

porem qnd quero consultar apenas um cliente nao kero que carregue as duas listas, apenas os dados pessoais, q usarei mais, mas qnd for necesário criar relatórios dos produtos comprados por um cliente, como farei? Obrigado.

Ah, por ultimo, eu tenho essa dúvida:
Se eu tivesse um Objeto Cliente tem uma lista de Produtos comprados, cada produto comprado tem um fornecedor, cada fornecedor tem uma lista de Produtos

quando eu carrego o objeto cliente, com lazy false, ele carrega a lista de produtos e produtos traz junto o fornecedor e a lista dos produtos do fornecedor?
Essa eh uma situação forçada, hipotética, para exemplificar, mas é isso que acontece? Ou quando carrego o cliente ele vai trazer junto apenas a lista d eprodutoss dele?

2 Respostas

Lavieri

LAZY é carregado somento quando vc faz a chamada, do método, é feito via proxy, vc não precisa fazer nada e chamada é realizada, neste seu exemplo, se vc tem 1 cliente q tem 1 conta e 2 listas uma de compra e outra de orçamento e tudo é lazy, na hora dos gets, o hibernate vai agir e retornar o dado correto…

por exemplo

cliente.getConta() … nesse momento o hibernate via fazer o select no banco e carregar o objeto…

cliente.getCompras() … nesse momento a lista de compras vai ser carregado, e so no momento da 1° chamada… apos isso o select não é mais feito e os dados ficam pendurados no objeto…

cliente.getOrcamentos() … tem o mesmo efeito do citado acima…

o método EAGER carrega forçadamente tudo ou seja… c no exemplo acima o métoo de acrregamento fosse EAGER… no momento q vc xamar 1 cliente… ele vai carregar o banco de dados quase todo, se o banco for muito amarrado, portanto evite EAGER!.. a não ser em 1-1

V

Oi pessoal, um colega me mandou um codigo para login e carrinho de compras, a duvida é: Gostaria de saber
em qual lugar eu coloco estes arquivos??? Tenho que criar um pacote para inserir eles dentro??? Estes 3 arquivos
vieram juntos numa pasta chamada libDB. É porque eu sou novo no JAVA.Ahh estou utilizando o netbeans.

Database.jsp


<%@ page import="java.sql.*" %>

<%
String DRIVER  = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String URL     = "jdbc:microsoft:sqlserver://localhost:1433";
String USUARIO = "root";
String SENHA   = "rodrigo";
%>



GetConnection.jsp

<%@ page import="java.sql.*" %>

<%
String DRIVER  = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String URL     = "jdbc:microsoft:sqlserver://localhost:1433";
String USUARIO = "root";
String SENHA   = "rodrigo";
%>




LoadDriver.jsp
<%@ include file="Database.jsp" %>

<%
try {
  Class.forName( DRIVER );
} catch ( ClassNotFoundException cnfe ) {
  String msg = "Driver JDBC não encontrado : " + cnfe.getMessage();
  throw new Exception(msg);
}
%>

Os meus outros arquivos estão tudo ok, somente estes tres que vieram juntos dentro de uma pasta
chamada libDB que eu não estou sabendo onde iseri-los. Se alguem puder dar uma força aí.

Obrigado.

Criado 26 de março de 2009
Ultima resposta 22 de abr. de 2009
Respostas 2
Participantes 3