Olá GUJ's
Pessoal, deu um nó na minha cabeça!
Tenho uma empresa que pode ter n serviços prestados. Persistir empresa até que é moleza, mas não sei qual seria a melhor maneira de persistir o serviço prestado.
Bom, considerando que o serviço prestado depende que uma empresa exista, eu poderia persistir utilizando uma destas abordagens.
1 -ServicoPrestadoDAO servDao = new ServicoPrestadoDAO();
servDao.create(servico1);
servDdao.create(servico2);
empresa.addServicoPrestado(servico1);
empresa.addServicoPrestado(servico2);
EmpresaDAO empresaDAO = new EmpresaDAO();
empresaDAO.create(empresa);
empresa.addServicoPrestado(servico1);
empresa.addServicoPrestado(servico2);
EmpresaDAO empresaDAO = new EmpresaDAO();
empresaDAO.update(empresa);
Reparem que na segunda abordagem eu não precisei persistir o servico antes de utilizá-lo. Quando dou o empresaDAO.update(empresa) subtendo que ele seja capaz de perceber que o servico1 e servico2 devem ser persistidos, e ele já faz para mim este serviço!
Ele também deveria perceber caso eu deletasse algum servicoPrestado.!
A questão é saber qual é a abordagem mais conveniente! A 2 parace ser melhor, mas é? Como vcs fazem isso?
Vou postar aqui um código de teste unitário, talvez fique melhor de entender!
public void testCreateServicoPrestadoAPartirDaEmpresa() throws DAOException {
Empresa empresa = new Empresa(new Cnpj("1"), "Empresa");
dao.create(empresa);
// criando servico prestado
ServicoPrestado sp1 = new ServicoPrestado("Titulo1", "Descricao2");
ServicoPrestado sp2 = new ServicoPrestado("Titulo2", "Descricao2");
empresa.addServicoPrestado(sp1);
empresa.addServicoPrestado(sp2);
// os servicos prestados sao persistidos
dao.update(empresa);
empresa = null;
empresa = dao.load(new Cnpj("1"));
assertEquals(2, empresa.getServicoPrestado().size());
assertTrue(empresa.getServicoPrestado().contains(sp1));
assertTrue(empresa.getServicoPrestado().contains(sp2));
}
Abraços!
Thiago Senna
… eu queria usar Hibernate… mas seu eu fazer isso é capaz de reprovarem meu trabalho.