@Override
 public void atualizar(UsuarioDTO usuarioDTO) {
   // Conversão de DTO -> Entidade para assim respeitar as camadas
   Usuario usuarioEntidade = this.usuarioConverter.toEntity(usuarioDTO);
   // Execução do método update para atualizar os dados no BD
   this.usuarioDAO.update(usuarioEntidade);
   List<PapelDTO> papeis = usuarioDTO.getPapeis();
   List<GrupoDTO> grupos = usuarioDTO.getGrupos();
   // Com o "usuário" atualizado, podemos aplicar no BD mudanças em suas
   // relações com Papel e Grupo
   this.atualizarPapeisEGrupos(usuarioDTO.getId(), papeis, grupos);
 }
 @Override
 public UsuarioDTO salvar(UsuarioDTO usuarioDTO) {
   // usuarioDTO é a instância de UsuarioDTO que deseja ser salva
   // Como os DAOs trabalham com entidades, é necessário converter
   // o DTO para Entidade, para isso serve o método 'toEntity' da classe
   // UsuarioDTOConverter
   Usuario usuarioEntidade = this.usuarioConverter.toEntity(usuarioDTO);
   // Com a entidade já instanciada é possível executar o métododo 'save'
   // da classe UsuarioDAO, e com isso os dados serão escritos no BD.
   Long id = this.usuarioDAO.save(usuarioEntidade);
   // O retorno do método 'save' é o ID gerado para a entidade em questão,
   // este ID será usado para criar as ligações entre as tabelas de
   // Usuario -> Papel e Usuario -> Grupo
   List<PapelDTO> papeis = usuarioDTO.getPapeis();
   List<GrupoDTO> grupos = usuarioDTO.getGrupos();
   // Execução do método que gerencia as ligações entre as tabelas
   this.atualizarPapeisEGrupos(id, papeis, grupos);
   // Por último colocamos o ID gerado em nosso DTO e o devolvemos para
   // quem executou a chamada, neste ponto poderia ser feito um 'findById'
   // mas nesse caso não é necessário
   usuarioDTO.setId(id);
   return usuarioDTO;
 }