Como usar fetch no hibernate?  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
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.

rodrigo_gomes
GUJ Master
[Avatar]

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
[WWW] [MSN] [ICQ]
vmm
Debugger

Membro desde: 08/04/2006 17:06:29
Mensagens: 64
Offline


Existe uma diferenca no resultado da query?
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.
passos
JavaEvangelist
[Avatar]

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
[Email]
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.
passos
JavaEvangelist
[Avatar]

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
[Email]
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.
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
p4p4l3gu4x
Smalltalk
[Avatar]

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
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team