Cache Hibernate  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
J2Alex
JavaEvangelist
[Avatar]

Membro desde: 18/01/2003 08:14:41
Mensagens: 348
Localização: São José dos Campos
Offline

Tem como habilitar cache para um relacionamento one-to-one com chave estrangeira?

Alexandre



Hoje tem Balada
https://apps.facebook.com/hojetembalada
Guia colaborativo de baladas, bares e restaurantes
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Dá pra botar lazy true nesse tipo de relacionamento?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
J2Alex
JavaEvangelist
[Avatar]

Membro desde: 18/01/2003 08:14:41
Mensagens: 348
Localização: São José dos Campos
Offline

?

Alexandre



Hoje tem Balada
https://apps.facebook.com/hojetembalada
Guia colaborativo de baladas, bares e restaurantes
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

da para habilitar lazy sim! apesar do default de relacao com ponta One ser eager.

sobre o second level cache, tasca um @Cache nessa relacao, ta resolvido.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
J2Alex
JavaEvangelist
[Avatar]

Membro desde: 18/01/2003 08:14:41
Mensagens: 348
Localização: São José dos Campos
Offline

Olá Paulo,

Quanto ao Lazy, não fuciona, ao menos quando eu uso HQL... com critéria acredito que eu consiga ter um controle maior...

Já a questão do cache... realmente não está funcionando. E já li algumas referências na net (google) que dizem que isso não é possível (mas acho que deveria ser). Tem alguma sugestão?

Será que eu estou marcando bobeira em alguma coisa...

Grato

Alexandre



Hoje tem Balada
https://apps.facebook.com/hojetembalada
Guia colaborativo de baladas, bares e restaurantes
[WWW]
J2Alex
JavaEvangelist
[Avatar]

Membro desde: 18/01/2003 08:14:41
Mensagens: 348
Localização: São José dos Campos
Offline

Paulo, eu de novo...

Se eu tento colocar um cache pra relação one-to-one eu recebo a seguinte excessão:



O que leva a crer que não é possível usar cache pra esse tipo de relação.

No lazy só são possíveis os valores: false, proxy e no-proxy.

Alexandre



Hoje tem Balada
https://apps.facebook.com/hojetembalada
Guia colaborativo de baladas, bares e restaurantes
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

Oi Alex

Nao sei como hbm, mas com anotacoes um simples @OneToOne(fetch=FetchType.LAZY) funciona. Entao deve ter sim como fazer no hbm. Que hibernate voce ta usando? Voce nao ta fazendo "fetch" no HQL neh?

Bem, eu nunca fiz cache de uma relacao que a ponta era One do outro lado, mas nao imagino um motivo pelo qual nao devesse funcionar. Manda os links que voce achou pra gente

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Rapaz, se dá pra defirnir ela como "lazy=true" ele vai ser carregado do cache da classe assim que alguém tentar acessar a propriedade pela primeira vez, você não precisa habilitar o cache para o relacionamento.

Provavelmente não deve ser possível fazer cache nesse tipo de relação exatamente por isso, ele vai sempre pegar no cache da classe já que tá fazendo o lazy-load de qualquer jeito.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

Mauricio, nao eh bem assim

Cache de relacionamentos funciona como o cache de Queries: ele guarda os IDs. Entao se o livro 7 tem o autor 5 como relacionamento, com cache de relacionamento e lazu esse numero 5 ficaria anotado em algum canto. A dynamic proxy pendurada no getAutor() ja devolve um proxy para levantar o Autor de id 5, sem ter de consultar o banco para ver quem esta relacionado com esse Livro. Pelo menos eh assim para o many. Realmente nao me parece muito util para o One na outra ponta.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
J2Alex
JavaEvangelist
[Avatar]

Membro desde: 18/01/2003 08:14:41
Mensagens: 348
Localização: São José dos Campos
Offline

O meu problema é o seguinte: eu tenho uma tabela A e uma tabela B que possuem um relacionamento one-to-one de um lado e may-to-one do outro, pois tenho um relacionamento com chave estrangeira.

A questão é que se eu chamo a tabela A ("from A where id = 1"), a tabela B vem junto... eu queria evitar esse comportamento, pois o modelo é complexo, NÃO pode ser mudado e essa característica vai prejudicar o desempenho... eu realmente não preciso da tabela B (lazy=true) na maioria dos casos e em outros casos os dados da tabela B poderiam muito bem estar em cache.

Não posso usar anotações, a solução tem que ser no hbm mesmo.

Paulo, não consegui achar o link que eu tinha lido antes...

Alexandre



Hoje tem Balada
https://apps.facebook.com/hojetembalada
Guia colaborativo de baladas, bares e restaurantes
[WWW]
thiago.router
What is classpath?

Membro desde: 20/10/2006 12:15:08
Mensagens: 8
Offline

Não faz muito sentido você fazer cache de algo que va mudar constantemente, é legal habilitar cache de segundo nível quando você possui uma coleção de objetos que muito raramente ira ser alterada, assim o ganho de performance sera perceptivel.
robertouba
JavaBaby
[Avatar]

Membro desde: 21/10/2009 23:41:28
Mensagens: 82
Localização: Jacutinga, Minas Gerais
Offline

Estou com um problema de Cache!
Bom, minha aplicação está rodando localmente e em outro servidor, ambos usando do mesmo banco de dados, entretanto, se eu altero um dado local, quando vou receber ele remoto, parece não estar editado, mas se eu fizer um restart do server, ele lê corretamente, portanto, gostaria de saber como desativar o cache do hibernate para algumas classes.

Valew!


@SuppressWarnings("unchecked")
public List<Filial> listar() {
return this.session.createCriteria(Filial.class).list();
}

This message was edited 1 time. Last update was at 17/06/2011 12:45:49



______________________________
[RoxF.]
[Email] [WWW] [MSN] [ICQ]
yorgan
GUJ Ranger
[Avatar]

Membro desde: 14/08/2006 19:41:31
Mensagens: 888
Localização: Floripa/SC
Offline

Bom, se o problema for com um objeto, você pode fazer assim:


[]'s
Daniel

[Email] [WWW]
robertouba
JavaBaby
[Avatar]

Membro desde: 21/10/2009 23:41:28
Mensagens: 82
Localização: Jacutinga, Minas Gerais
Offline

isso?


______________________________
[RoxF.]
[Email] [WWW] [MSN] [ICQ]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

você chegou a configurar cache de 2o nível?

--
Caelum
www.caelum.com.br

 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team