[RESOLVIDO] Dúvidas @OneToMany sem Cascade

Bom dia pessoal,
sempre utilizei CascadeType.ALL pois sempre foi o recomendado, mas agora não posso usar esse tipo de Cascade por motivo de performance.
Estou com dúvida de como atualizar uma lista de objetos que é @OneToMany sem Cascade…
Tenho o seguinte atributo:

@OneToMany(mappedBy = "ped_id", fetch = FetchType.EAGER) private List<PedidoItem> pedidoItems;
Sei que sempre que eu carregar o objeto, essa lista será trazida pois fetch esta EAGER. Tudo bem.
Agora em certos momentos irei adicionar ou remover item desse pedidoItems, e quero dar um saveOrUpdate nessa lista, mas sem dar update no objeto que possui essa lista (que é o que acontece com o CascadeType.ALL).
Seria eu só dar um saveOrUpdate no PedidoItem que eu adicionar/remover da lista? Se for, como eu faria pra carregar essa lista novamente sem carregar os dados do objeto que possui essa lista?
Procurei em alguns exemplos e não consegui tirar essa minha dúvida.

Obrigado desde já!
Abraço!

EDIT: Simplificando o que eu quero saber:

  • Como eu vou carregar somente a lista de objetos?
  • Como vou dar saveOrUpdate somente na lista de objetos?

[quote=faelzindc]sempre utilizei CascadeType.ALL pois sempre foi o recomendado,[/quote] Por quem? onde?
Até onde sei e já li, é péssima prática deixar cascade em lista. Totalmente ñ indicado para ser utilizado com lista.

[quote=faelzindc]mas agora não posso usar esse tipo de Cascade por motivo de performance. [/quote] tá aí um motivo.

[quote=faelzindc]Estou com dúvida de como atualizar uma lista de objetos que é @OneToMany sem Cascade…
Tenho o seguinte atributo:

@OneToMany(mappedBy = "ped_id", fetch = FetchType.EAGER) private List<PedidoItem> pedidoItems;
Sei que sempre que eu carregar o objeto, essa lista será trazida pois fetch esta EAGER. Tudo bem.
Agora em certos momentos irei adicionar ou remover item desse pedidoItems, e quero dar um saveOrUpdate nessa lista, mas sem dar update no objeto que possui essa lista (que é o que acontece com o CascadeType.ALL).
Seria eu só dar um saveOrUpdate no PedidoItem que eu adicionar/remover da lista? Se for, como eu faria pra carregar essa lista novamente sem carregar os dados do objeto que possui essa lista?
Procurei em alguns exemplos e não consegui tirar essa minha dúvida.

Obrigado desde já!
Abraço!

EDIT: Simplificando o que eu quero saber:

  • Como eu vou carregar somente a lista de objetos?
  • Como vou dar saveOrUpdate somente na lista de objetos?[/quote]
    Você tem que entender que se você está alterando a lista de um objeto, você está mexendo no objeto.
    A a = entityManager.find(A.class, 1);
    a.getBs().add(b); <=== vc tem que passar pelo A para chegar na lista B.

[quote=Hebert Coelho][quote=faelzindc]sempre utilizei CascadeType.ALL pois sempre foi o recomendado,[/quote] Por quem? onde?
Até onde sei e já li, é péssima prática deixar cascade em lista. Totalmente ñ indicado para ser utilizado com lista.

[quote=faelzindc]mas agora não posso usar esse tipo de Cascade por motivo de performance. [/quote] tá aí um motivo.

[quote=faelzindc]Estou com dúvida de como atualizar uma lista de objetos que é @OneToMany sem Cascade…
Tenho o seguinte atributo:

@OneToMany(mappedBy = "ped_id", fetch = FetchType.EAGER) private List<PedidoItem> pedidoItems;
Sei que sempre que eu carregar o objeto, essa lista será trazida pois fetch esta EAGER. Tudo bem.
Agora em certos momentos irei adicionar ou remover item desse pedidoItems, e quero dar um saveOrUpdate nessa lista, mas sem dar update no objeto que possui essa lista (que é o que acontece com o CascadeType.ALL).
Seria eu só dar um saveOrUpdate no PedidoItem que eu adicionar/remover da lista? Se for, como eu faria pra carregar essa lista novamente sem carregar os dados do objeto que possui essa lista?
Procurei em alguns exemplos e não consegui tirar essa minha dúvida.

Obrigado desde já!
Abraço!

EDIT: Simplificando o que eu quero saber:

  • Como eu vou carregar somente a lista de objetos?
  • Como vou dar saveOrUpdate somente na lista de objetos?[/quote]
    Você tem que entender que se você está alterando a lista de um objeto, você está mexendo no objeto.
    A a = entityManager.find(A.class, 1);
    a.getBs().add(b); <=== vc tem que passar pelo A para chegar na lista B.[/quote]
    É que estou usando o cellEdit do primefaces, então não sei qual objeto estou alterando da lista, então eu gostaria de dar um saveOrUpdate na lista toda. Aproveitando, teria como eu saber qual objeto da lista alterei com o cellEdit do primefaces?

Consegui pegar o objeto que estou alterando.
Mexerei somente no objeto que estou alterando, não usarei mais o Cascade ALL.
Agora me tire uma última dúvida, pra eu carregar somente a lista do OneToMany sem o Cascade, só é possivel fazer isso criando no dao um método que retorne a lista desses objetos e atribui-la no List?

select p.filhos from Pessoa p

JPA Consultas e Dicas

[quote=Hebert Coelho]select p.filhos from Pessoa p

JPA Consultas e Dicas[/quote]
Perfeito!
Fiz da forma que voce me indicou.
Fiz todas essas perguntas por ter dúvida se existia alguma anotação que fazia o que eu precisava “sozinho”.
A cada objeto alterado, inserido, ou deletado eu atualizo somente ele.
E no cellEdit do primefaces, fiz pegar o evento e a linha que está sendo alterada, pegando o objeto e fazendo sua alteração ao banco.

Obrigado!