[quote=garcia-jj]LPJava, JPA tem sim o mesmo problema.
Esse assunto do lazy-initialization é bem controverso porque muita gente acha X, outros Y, e outros Z. Há inúmeras discuções por aí sobre isso.
Para fins de exemplo, imagine o cenário que você tem um servlet que chama ométodo findUser do EJB UserRemote. Esse UserRemote tem um EntityManager lá dentro. Quando você carrega o objeto do banco e há alguma propriedade lazy-loaded que ainda não foi carregada antes de sair do EJB terá o lazy-initialization-exception. Isso porque quando acabou a execução dentro do EJB todas as referencias são finalizadas, e o EntityManager é finalizado.
Quando você, dentro do JSP, tentar ler uma propridade terá o mesmo problema que no Hibernate puro.
Fazendo uma pequena busca na internet há uma série de discuções sobre isso: http://www.google.com.br/search?q=jpa+lazy+initialization+exception. Há aqui mesmo no GUJ uma série de discuções sobre o certo e errado dessa exception. Não vou entrar muito no mérito disso, já que o intuito é apenas exemplificar que o JPA também tem esse erro.
Diferentemente do Hibernate, no JPA o valor padrão do fetch é EAGER, então quando você tem algum one-to-* ou many-to-* o JPA faz load non-lazy. Talvez por isso vocês não tenham recebido esse erro.
Eu sou um grande fã do JPA porque ele finalmente coloca um padrão para as ferramentas ORM. Eu tenho um projeto de cobrança eletrônica que utilizada Hibernate. Havia um cliente que usava uma plataforma completa Oracle, então ele tinha vontade de usar o Toplink para ficar integrado ao OC4J. Fiz a alteração em poucos minutos e estava lá rodando em Toplink.[/quote]
hmm, legal garcia, sua abordagem, eu de fato nao sabia do mesmo problema com JPA, ate pq nao passei pelo mesmo ainda. eh o velho ditado vivendo e aprendendo. mas, no hibernate se configurar para EAGER resolve o problema, mas nem sempre queremos EAGER .
Eu tb gosto da JPA, e o que vc citou como exemplo, eh show, salva o dia de qualquer desenvolvedor de software e ainda temos a satisfacao do cliente.