Bem objetos de domínio = negócio = modelo?

Bom, já que me colocaram na briga de volta, vou tentar expressar meu ponto de vista. Uma saída seria isolar e sincronizar o bloco concorrente para garantir a integridade, tipo:

[code]
syncronized(this) {
Turma turma = daoFactory.criarDao().getTurma(1);

if(turma.getQtdeVagas() < obtemQtdeMatriculasTurma(1)) {
daoFactory.getTransaction().begin();

  //Núcleo envolvendo domínio + conceitos ortogonais
  Aluno aluno = new Aluno();
  aluno.setNome("ze");
  aluno.setMatricula(123456);
  turma.adicionar(aluno);
  //Fim núcleo
 daoFactory.criarDao().salvar(turma); //pode lançar uma exceção de negócio
 daoFactory.getTransaction().commit();

} else {
throw new NumeroDeVagasEsgotadasException();
}
}[/code]

Então, desta forma lançaríamos uma exceção de negócios. Lembrando que temos as desvantagens do uso de tal solução, como por exemplo a perda de performance. Vale lembrar também que esse código pode ser otimizado.

A Paz!

Certo é isso mesmo, sou terrível para escrever.

[quote=pcalcado]
Se for, supondo que esta regra de negócio só vá ser verificada quando se tenta inserir um registro o DAO que o faz iria receber uma SQLException dizendo que o registro foi duplicado. Supondo que você consiga identificar a causa da SQLException (o Spring é bom nisso) seu DAO pode transformá-la numa exceção de negócios:[/quote]

Ahhh agora faz sentido. (depois de ler ou ter outra opinião é fácil achar sentido)

throw new NaoHavagaException(sqlException);

[quote=pcalcado]
Que pode ser manipulada pelas classes de negócio.[/quote]
Entendi, mas e se no caso acima, o erro fosse retornado a camada de Serviço, o serviço teria a responsabilidade apenas de passar-lo pra frente (seja para apresentação ou aplicação)?

[quote=dreampeppers99][quote=pcalcado]
Que pode ser manipulada pelas classes de negócio.[/quote]
Entendi, mas e se no caso acima, o erro fosse retornado a camada de Serviço, o serviço teria a responsabilidade apenas de passar-lo pra frente (seja para apresentação ou aplicação)?[/quote]

Depende. Como Apresentação depende de Negócios não tem problema ela lidar com as exceções desta Camada porém você pdoe julgar ser mais útil abstrair o erro, por exemplo fazendo NaoHavagaException estender alguma ExcecaoDeNegociosException e apenas exibir a mensagem de erro.

Obrigado, apesar do tópico ter sido extenso acho que cheguei ao que queria.