| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 16:55:27
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Fala aí mestres...
Olha só a seguinte situação<hipotética>.
Tenho uma classe Turma que contém um Set<Aluno> com FetchType.LAZY (tem que ser Lazy por questões de performance).
Então, tenho uma TelaDeTurma que exibe dados da turma mais os alunos da turma.
Para essa tela (que é Swing) tenho um Facade @Stateful:
Pergunta 1: Esse contains("") é a coisa mais feia que já coloquei no código, mas sem ele não inicializa a coleção! Tem alguma outra alternativa?
Pergunta 2: Qual a diferença de getReference e find no EntityManager?
Abraços!
Rodrigo Y.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 18:49:05
|
fabio.patricio
GUJ Master
Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline
|
Rodrigo,
Deixa eu ver se entendi.
Tu tem uma tela que "usa" este facade para pegar os dados. Se tu nao inicializa a colecao a mesma da dando LazyIni...Exception?
É por isso que tu ta dando o contains()?
Bom nao sei se entendi certo, mas se for isso tem outra maneira de inicializar a colecao que seria utilizando o Hibernate.initialize(), mas IMHO é igualmente horrivel fazer isso.
Outra maneira, que eu acho mais "bonita". Se tu estiver usando Hibernate com Criteria tu pode usar o setFethMode da API e usar um metodo de Feth diferente para essa consulta.
Se nao entendi bem, passa mais detalhes ai.
]['s
|
Fabio Patricio
http://blog.wansoft.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 19:15:30
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
fabgp2001 wrote:
Se nao entendi bem, passa mais detalhes ai.
É isso mesmoo contains("") é só para não dar LazyLoadException no cliente remoto... O negócio é que estou baseando tudo no entity manager, e não no hibernate....
Como assim Hibernate.initialize? Como assim com criteria?
(Turma e Alunos é uma agregação).
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 19:24:09
|
fabio.patricio
GUJ Master
Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline
|
Acho que eu precipitei as coisas suponhando que tu estaria usando Hibernate no JPA.
Vamos la. Qual a implementacao de JPA que tu ta usando?
O que eu quiz dizer é o seguinte. Com JPA puro acho que nao tem como fazedr isso.
Se a tua implementacao for o Hibernate da pra usar esse "recurso" dele (Hibernate.initialize()) ou ainda nao usar os relacionamentos como tu ta fazendo e forcar uma consulta com Criteria. Claro tudo isso vai te deixar dependente da implementacao que estiver usando.
Agora com JPA puro, como nao tem api de Criteria acho que nao tem muita solucao.
]['s
|
Fabio Patricio
http://blog.wansoft.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 19:42:16
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
fabgp2001 wrote: Vamos la. Qual a implementacao de JPA que tu ta usando?
É Hibernate, mas não quero nem saber se for outro...
fabgp2001 wrote: Se a tua implementacao for o Hibernate da pra usar esse "recurso" dele (Hibernate.initialize())
Acho que vou criar uma classe "WorkAroundUtils"... mas realmente não sabia desse "Hibernate.initialize(Object proxy)". Valeu!!!
fabgp2001 wrote: ou ainda nao usar os relacionamentos como tu ta fazendo e forcar uma consulta com Criteria.
Epa, não estou disposto a mudar o meu modelo de negócio só por conta desse contains("")...
Cliente desconectado: O buraco é mais embaixo....
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 20:17:01
|
fabio.patricio
GUJ Master
Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline
|
rodrigoy wrote:Cliente desconectado: O buraco é mais embaixo....
Pois é tambem acho.
Ja rolou uma discucao aqui no GUJ do pessoal falando do JPA nao ter uma API de Criteria. Se tivesse o problema poderia ser resolvido facilmente.
]['s
|
Fabio Patricio
http://blog.wansoft.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/11/2006 21:48:12
|
AllMighty
Java Ninja
![[Avatar]](/images/avatar/c900197841211ba608f56.gif)
Membro desde: 16/08/2004 17:21:42
Mensagens: 266
Localização: São Paulo
Offline
|
Criteria API seria legal, mas dá para fazer uma busca mudando o tipo de carregamento do relacionamento usando JPQL. Veja a documentação dos FETCH JOINs.
|
Rafael de F. Ferreira
Blog: http://www.rafaelferreira.net/
Links miscelâneos: http://stoa.usp.br/rafaelferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/11/2006 00:35:42
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
As coisas estão melhorando, mas o paradigma OO atual ainda tem muitas limitações... concordam?
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2006 02:55:36
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
rodrigoy wrote:As coisas estão melhorando, mas o paradigma OO atual ainda tem muitas limitações... concordam?

Er, exemplifique as limitações que o "paradigma OO" tem?
|
Diego Plentz - Twitter
"Provide options, don't make lame excuses." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2006 09:27:42
|
Proteu Alcebidiano
JavaEvangelist
![[Avatar]](/images/avatar/ceccbaaff99be20a857e00767f70b481.jpg)
Membro desde: 23/06/2006 14:38:34
Mensagens: 391
Localização: Cidadão do Mundo
Offline
|
rodrigoy wrote:As coisas estão melhorando, mas o paradigma OO atual ainda tem muitas limitações... concordam?

hum, você quis dizer limitações na implementação do paradigma no design de uma linguagem, não?
|
Glaucio G. de M. Melo
Don't run Alone.
[gm]² on forecasting
The world is parallel, and yet most often we program real-world applications in sequential programming languages. This is unnecessarily difficult. (Joe Armstrong). |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 22:47:12
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Discuti um pouco sobre algumas coisas nesse post:
http://www.guj.com.br/posts/list/47179.java
Proteu, estou me limitando ao Java mesmo, mas creio que para qualquer linguagem/arquitetura o modelo de objetos ainda é um pouco longe do negócio.
Por exemplo, o post que mencionei diz que os entities no EJB 3.0 já podem sair livremente para a camada de apresentação, porém, não é a mesma coisa do que se tivesse no servidor. (Alguma linguagem ou arquitetura resolve isso de uma maneira melhor?)
É confuso, ao mesmo tempo que as coisas evoluem e ficam mais simples parece que mais e mais "workarounds" vão surgindo...
Não sei se estou sendo claro... a meu ver a informática vai começar a ficar legal quando não precisarmos mais do departamento de informática...
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/12/2006 12:45:21
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Online
|
rodrigoy wrote:
Por exemplo, o post que mencionei diz que os entities no EJB 3.0 já podem sair livremente para a camada de apresentação, porém, não é a mesma coisa do que se tivesse no servidor. (Alguma linguagem ou arquitetura resolve isso de uma maneira melhor?)
ejb2! os entity beans funcionavam remotamente, ja que eles nao ficavam detached nunca, sempre acessados atraves de seus stubs. mas ai tinha o problema de zilhares de chamadas remotas, entao criaram as interfaces locais. ai quando viram que a boa pratica seria SEMPRE usar interface local para os EBs, criaram o ejb3 de tal maneira q eles nao podem ser acessados como um EB managed de fora do servidor.
em outras palavras: a boa pratica virou spec
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/12/2006 13:49:01
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Até gostava dessa característica dos EBs 2.1, mas não ao custo da complexidade que é trabalhar na espec EJB 2... não vale a pena por conta da baixa produtividade.
Essa prática dos EBs só terem interface local que alastrou DTOS por tudo quando é sistema...
falous!
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/12/2006 14:28:03
|
Fabio Kung
JavaEvangelist
Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline
|
É isso mesmo Rodrigo. Não tem jeito.
Mas não acho que a limitação aí seja da OO não. A limitação é justamente o cliente remoto. Como envolve a rede, o uso da banda tem que ser sempre otimizado, transmitindo só o que for necessário.
Por isso sim, você precisa iniciar a coleção de alguma forma. Mesmo que seja com o contains.
Estamos longe de ter transparência total pra aplicações distribuídas.
Em tempo: eu já acho essa história de dividir interface local e remota muito estranha. O ejb contêiner tinha de ser esperto o suficiente para saber quando acessar um ejb remoto ou local, não acham?
|
Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?
http://blog.caelum.com.br
Fabio Kung
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2007 16:44:15
|
mchiareli
JavaEvangelist
![[Avatar]](/images/avatar/03e4d3f831100d4355663f3d425d716b.png)
Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline
|
como inicializar o proxy criado pela jpa, antes de enviar para o cliente, estou com problemas neste ponto, ele envia o objeto "falso" então gera exceptions malucas.....
nao acho nada disso relacionado a jpa, apenas a coisas especificas como hibernate ou spring-jpa, não é possivel fazer isso com jpa, eu preciso desligar o lazy loading no persistence.xml....??
|
codifica.wordpress.com |
|
|
 |
|
|