Tenho uma colecao que é atributo de um objeto e é configurada com lazy=true no mapeamento do hibernate.
Seria Tesoura.materiais.
O meu método GerenciadorTesoura.getTodasTesouras() devolve uma coleção de todas tesouras do banco. Elas sao apresentadas em uma de pesquisa. Se a pessoa abrir a tela de edição, uma dessas tesouras sao apresentada na tela de edição. Na tela de edição, preciso iniciar a coleção materiais da tesoura, pois lá vou adicionar novos materiais ou excluir.
O problema é que para mim referenciar materiais, o objeto tesoura precisa estar ligado a uma secao aberta. Mas o GerenciadorTesoura.getTodasTerouras, devolve a colecao de tesouras e já fecha a secao. Então, tenho que dar um jeito de iniciar a colecao materiais de tesoura, antes de utilizá-la. Pensei em fazer a solução abaixo. O que vocês acham ou recomendam para essa situação?
protected void acaoAdicionar() {
if (tesoura ==null)
acaoSalvar();
Session session = HibernateUtil.getSession();
Transaction trans = session.beginTransaction();
session.update(tesoura);
Hibernate.initialize(tesoura.getMateriais());
trans.commit();
session.close();
new ControladorTelaEdicaoMaterialDaTesoura(tesoura);
}