Duvida em Hibernate annotation!

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

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

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.

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 @To(cascade=…) as shown in the previous example.

1 curtida

obrigado vlw mesmo!!!

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

[code]Class Cabeça{
@OneToOne(mappedBy=“Pessoa”)
}

Class Pessoa{
@OneToOne(cascade = CascadeType.REMOVE)
@JoinColumn(name=“Cabeça_fk”)
private Cabeça;
}[/code]

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

Ps: Eu sou muito noob no hibernate.