Olá
No curso criamos a classe negociação como sendo imutável, pois uma negociação após ser realizada não pode ter seu estado alterado, e como a proposta do sistema é receber os dados de um web service converter esses dados para uma lista de objetos negociação e exibir os dados na tela, faz bastyante sentido que seja assim.
O problema é que no dia a dia geralmente os dados são provenientes de formulários preenchidos pelos usuários, vamos supor que as negociações fossem incluidas via formulário, já que o jsf usa os métodós setters para preencher os atributos do objeto teriamos problemas poisa classe negociação não tem setters, visto que é imutavel e possui apenas o construtor, se fizermos a classe negociação deixar de ser imutável, vamos ter problemas de encapsulamento, pois vamos poder alterar o estado da negociação.
Do ponto de vista prático eu iria manter a classe negociação imutável e no meu managed bean eu criaria um Value Object, NegociacaoVO e na ação de salvar eu criaria o objeto Negociacao de fato atraves do construtor copiando os dados informados no ValueObject.
O problema é que Value Objects sofrem do mesmo problema do café e do ovo, hora são hérois, ora são vilões, tem muita gente que diz pra usar e tem muita gente que diz que não. Neste caso qual seria a melhor saída?