estou com problemas de performace lazy=false, aumenta meu problema =/
no caso do join, é melhor que o lazy=false, no entanto, nao me agrado mt.
pois tenho varias consultas como essa:
public List<AnuncioVeiculo> retrieveByTipo(String tipo) {
Criteria criteria = getSession(false).createCriteria(getClasse());
criteria.add(Restrictions.eq("estado",AnuncioEstado.NO_AR));
criteria.createCriteria("produto").add(Restrictions.eq("tipo", tipo));
criteria.setMaxResults(100);
return criteria.list();
}
e se eu utilizar join terei que adicionar nesses metodos o FetchMode.JOIN, ficando o metodo assim: [ficando algo parecendo um lazy=false]
public List<AnuncioVeiculo> retrieveByTipo(String tipo) {
Criteria criteria = getSession(false).createCriteria(getClasse());
criteria.add(Restrictions.eq("estado",AnuncioEstado.NO_AR));
criteria.createCriteria("produto").add(Restrictions.eq("tipo", tipo));
criteria.setMaxResults(100);
criteria.setFetchMode("produto", FetchMode.JOIN);
criteria.setFetchMode("produto.modelo", FetchMode.JOIN);
criteria.setFetchMode("produto.modelo.fabricante", FetchMode.JOIN);
criteria.setFetchMode("fotos", FetchMode.JOIN);
criteria.setFetchMode("contato", FetchMode.JOIN);
criteria.setFetchMode("contato.telefones", FetchMode.JOIN);
criteria.setFetchMode("anunciante", FetchMode.JOIN);
return criteria.list();
}
onde estarei carregando os objetos desnecessariamentes, pois como pagino o resultado em 10 e 10.
com o join carregarei logo os 100 objetos, ja com o OSIV vou carregando a medida que o usuário for avançado.
O que eu gostaria mesmo de saber, é se tem como OSIV manter a sessão aberta em algumas paginas espeficicas, no caso, as de resultado de busca!
Att. Dirceu