Desse jeito, O ClienteDAO irá persistir o cliente do seguinte modo:
1- varrer a coleção de contas;
2- A cada conta, chamar o ContaBancariaDAO para persistir ContaBancaria.
3- Persistir o Cliente caso não tenha dado erro
O problema que não terá garantia de rollback da transação. Quando der erro na inserção da segunda ContaBancaria, a primeira já foi inserida com sucesso.
O correto seria usar a mesma transação para persistir o Cliente e a ContaBancaria.
Possíveis soluções:
A - Persistir tudo dentro do ClienteDAO, sem chamar o ContaBancariaDAO, e commitar ao final das operações.
B - Passar a conexão com o banco entre as classes ClienteDAO e ContaBancariaDAO (NÃO RECOMENDO).
Se N é um número muito grande ou se trazer a conta é custoso use Lazy Loading. Se não, quando o objeto cliente for trazido do banco de dados já insira todos os dados dentro dele.
Desse jeito, O ClienteDAO irá persistir o cliente do seguinte modo:
1- varrer a coleção de contas;
2- A cada conta, chamar o ContaBancariaDAO para persistir ContaBancaria.
3- Persistir o Cliente caso não tenha dado erro
O problema que não terá garantia de rollback da transação. Quando der erro na inserção da segunda ContaBancaria, a primeira já foi inserida com sucesso.
O correto seria usar a mesma transação para persistir o Cliente e a ContaBancaria.
Possíveis soluções:
A - Persistir tudo dentro do ClienteDAO, sem chamar o ContaBancariaDAO, e commitar ao final das operações.
B - Passar a conexão com o banco entre as classes ClienteDAO e ContaBancariaDAO (NÃO RECOMENDO).
Abs,[/quote]
só por curiosidade, pq voce nao recomenda a opção B?