| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2007 15:31:43
|
vmm
Debugger
Membro desde: 08/04/2006 17:06:29
Mensagens: 64
Offline
|
Para o mapeamento abaixo, para que serve o fetch? Qual a diferenca entre fetch = join e fetch = select?
<many-to-one name="universidade"
class="Universidade"
cascade="non"
fetch="join"
lazy="true"
column="id_univerdade">
TKS.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2007 15:37:28
|
rodrigo_gomes
GUJ Master
![[Avatar]](/images/avatar/d30960ce77e83d896503d43ba249caf7.jpg)
Membro desde: 25/11/2003 15:45:21
Mensagens: 1088
Localização: São Paulo
Offline
|
Olá,
Basicamente, isso quer dizer que quando o fetch tiver "join" ele irá pegar os dados de sua collection em uma única query, fazendo um join.
Se tiver select, ele fazer fazer uma monte de query para preencher sua collection.
[]´s
|
rodrigo de paiva gomes
http://twitter.com/rod_gomes |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2007 15:51:27
|
vmm
Debugger
Membro desde: 08/04/2006 17:06:29
Mensagens: 64
Offline
|
Existe uma diferenca no resultado da query?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2007 15:52:05
|
vmm
Debugger
Membro desde: 08/04/2006 17:06:29
Mensagens: 64
Offline
|
Saberia dar um exemplo de como o hibernate está fazendo o select em ambos os casos?
Obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2007 19:13:08
|
passos
JavaEvangelist
![[Avatar]](/images/avatar/555d6702c950ecb729a966504af0a635.jpg)
Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline
|
Se vc colocar join ele vai fazer tudo num select so, trazendo o seu objeto populado com todas as informacoes. Se vc colocar select ele nao vai trazer o dado desse relacionamento e ira fazer um select a primeira vez que o atributo for acessado!
|
Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/01/2007 19:50:54
|
vmm
Debugger
Membro desde: 08/04/2006 17:06:29
Mensagens: 64
Offline
|
O lazy=true faz com que as informacoes sejam trazidas quando eu acesso uma propriedade atraves de get, certo? entao qual a diferenca de lazy para select?
Nao sei se estou confundindo.
Desde ja muito obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2007 16:50:11
|
passos
JavaEvangelist
![[Avatar]](/images/avatar/555d6702c950ecb729a966504af0a635.jpg)
Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline
|
Sim, vc esta confuso
Lazy diz QUANDO trazer.
lazy="true" - Traga quando eu precisar ( ou seja. Quando eu acessar )
lazy = "false" - Traga junto com o objeto principal
Fetch diz COMO trazer.
fetch = "select" - Faça um select pra pegar esse atributo
fetch="join" - Faça um join com o objeto principal e traga junto com ele. Essa opção ANULA a opção lazy = "true"
E ae? Pescou!?
|
Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:04:10
|
vmm
Debugger
Membro desde: 08/04/2006 17:06:29
Mensagens: 64
Offline
|
Opa, já estou menos confuso.
fetch= select e lasy = true, sempre sao usados em conjunto ?
fetch = join e lay = false, sempre sao usados em conjunto?
o default seria fetch = select e lazy = true?
TKS.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/06/2008 17:16:36
|
jeffersonbezerra
HelloWorld
Membro desde: 28/06/2006 21:15:46
Mensagens: 11
Offline
|
Vê minha dúvida.
tenho a seguinte classe:
@Entity
class usuario{
...
@ManyToMany
private Set<Recurso> permissoes
...
}
peguei um objeto e o coloquei na Sessão. em algum momento durante a utilização do sistema pelo usuário, preciso pegar os dados contidos nesse atributo, porem o hibernate não consegue fazer o lazy, pois a transação já fora fechada. tive que por o Lazy=false, mas, gostaria de saber como fazer para trabalhar com lazy=true
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2009 20:22:41
|
p4p4l3gu4x
Smalltalk
![[Avatar]](/images/avatar/ef0953e927c4b0df8cd7e36c597f6d30.jpg)
Membro desde: 15/12/2008 21:38:49
Mensagens: 2
Offline
|
jeffersonbezerra wrote:Vê minha dúvida.
tenho a seguinte classe:
@Entity
class usuario{
...
@ManyToMany
private Set<Recurso> permissoes
...
}
peguei um objeto e o coloquei na Sessão. em algum momento durante a utilização do sistema pelo usuário, preciso pegar os dados contidos nesse atributo, porem o hibernate não consegue fazer o lazy, pois a transação já fora fechada. tive que por o Lazy=false, mas, gostaria de saber como fazer para trabalhar com lazy=true
na verdade se vc trabalha do jeito que vc escreveu acima(ANNOTATIONS), vc naum utilizaria lazy=true, nem lazy=false, e sim, vc utilizaria:
ou
EAGER, seria equivalente lazy = false.
Não esquecendo das outras propriedades que são necessárias para complementar o Mapeamento @ManyToMany.
|
P4p4l3gu4x |
|
|
 |
|
|