Dúvidas sobre o "FetchType.EAGER" e o "CascadeType.ALL"

2 respostas
K

Olá, Pessoal!

Estou desenvolvendo um sistema, usando JPA como ORM (Provedor TopLink).

Minha dúvida é a seguinte:

Eu entendo bem o funcionamento dessas duas anotações, porém, fico meio em dúvida de QUANDO usa-las. O que eu quero dizer é o seguinte, como eu posso definir quando deve ser utilizado o FetchType.EAGER no lugar do LAZY (Quanto isso vai ser melhor para o Sistema), e quando eu devo utilizar Cascade, que tipo de pensamento eu devo ter pra saber o quanto isso vai afetar o sistema, tanto no desempenho, quanto nos dados.

Por exemplo, em relacionamentos como “Pessoa Fisica” e “CPF” (OneToOne), eu tenho utilizado essas duas anotações, já que um CPF deve sempre vir carregado com a “Pessoa Fisica”, e sempre que uma “Pessoa Fisica” for removida, adicionada ou alterada, o CPF deve ser removido, adicionado ou alterado junto. Mas esse é um tipo de relacionamento fácil de detectar isso, existem relacionamentos mais complicados de se definir esse tipo de coisa.

Espero ter sido claro! Agradeço desde já!

Valeu! Abraços!

2 Respostas

W

Tome cuidade com FetchType.LAZY, pois ele é só um hint para o persistence provider(o persistence provider pode usar FetchType.EAGER mesmo se você colocar como LAZY)

K

Como assim?

Isso é importante, pois, se o provedor faz isso mesmo, é bom saber qual deles faz, já que, em alguns casos, é extremamente inviável usar FetchType.EAGER.

Criado 7 de dezembro de 2009
Ultima resposta 7 de dez. de 2009
Respostas 2
Participantes 2