Duvida em Hibernate annotation!

5 respostas
dicabeca

pessoal queria q alguem me explicasse o q cada propiedade do CascadeType faz na hora do mapeamento.

CascadeType.MERGE
CascadeType.PERSIST
CascadeType.REMOVE
CascadeType.REFRESH

quem puder ai obrigado

5 Respostas

dicabeca

ai se alguem ainda puder me ajudar pode dizer a grosso modo mesmo,so quero saber o cada uma faz,sem muitos detalhes.

Giulliano

eu acho mais fácil vc buscar isso na net ou até mesmo no manual do hibernate…

em todo caso…num modo grosso as palavras :

MERGE : faz a alteração que vc mandou diretamente no banco ignorando os objetos q ficam na sessão…ou seja se na sua sessão o objeto tiver um valor e vc quiser passar por cima e atualizar diretamente no banco ao invés do save use o merge

REMOVE : o nome já diz

REFRESH : o nome também já diz (atualizar)

PERSIST : deve ser o contrário do merge…ele deve usar o objeto da sessão antes.

Giulliano

Não esta muito bem explicado mas dá uma luz…

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#entity-hibspec-cascade

2.4.7. Cascade
Hibernate offers more operations than the Java Persistence specification. You can use the @Cascade annotation to cascade the following operations:

PERSIST

MERGE

REMOVE

REFRESH

DELETE

SAVE_UPDATE

REPLICATE

DELETE_ORPHAN

LOCK

EVICT

This is especially useful for SAVE_UPDATE (which is the operation cascaded at flush time if you use plain Hibernate Annotations - Hibernate EntityManager cascade PERSIST at flush time as per the specification). DELETE_ORPHAN applies only to @OneToMany associations, and indicates that the delete()/remove() operation should be applied to any child object that is removed from the association. In other words, if a child is dereferenced by a persistent parent and if DELETE_ORPHAN is used, the “orphaned” child is deleted.

@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )

@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,

org.hibernate.annotations.CascadeType.DELETE_ORPHAN})

public Collection<Employer> getEmployers()

It is recommended to use @Cascade to compliment @<em>To</em>(cascade=…) as shown in the previous example.
dicabeca

obrigado vlw mesmo!!!

R

Então eu utilizo REMOVE para, além de remover a entidade, deletar também as entidades que ela faz referência???
Assim:

Class Cabeça{
   @OneToOne(mappedBy="Pessoa")
}

Class Pessoa{
   @OneToOne(cascade = CascadeType.REMOVE)
   @JoinColumn(name="Cabeça_fk")
   private Cabeça;
}

Então quando eu deleto uma pessoa deleto também uma cabeça?

Ps: Eu sou muito noob no hibernate.

Criado 2 de agosto de 2007
Ultima resposta 2 de jul. de 2008
Respostas 5
Participantes 3