1-Um Collection genérica.
2-Independente do que eu precise, retorno o objeto inteiro, quem é responsável pelo tratamento das informações é minha camada de negócio.
3-Não entendi, de qualquer forma retorno sempre o objeto, havendo campos nulos ou não.
depende muito.
ja retornei collections de obj, somente obj com os atributos…
gosto muito de usar uma VO generico, que é um hashmap, so ele trafega dados, crio interfaces para as cosntantes usadas nas chaves.
ele pode conter beans, ou collections de beans, ou wrappers, dependendo do caso.
Eu acredito que todos esses usos são válidos, não vejo mal em o seu DAO retornar diretamente DTOs caso em todos use cases dele os valores são enviados para o outro tier sem qualquer processamento.
Não tem problema retornar objetos incompletos caso um dos membros seja um blob de 100megas, por exemplo.
[quote=jgbt]depende muito.
ja retornei collections de obj, somente obj com os atributos…
gosto muito de usar uma VO generico, que é um hashmap, so ele trafega dados, crio interfaces para as cosntantes usadas nas chaves.
ele pode conter beans, ou collections de beans, ou wrappers, dependendo do caso.
Todo muito mete o pau no desenvolvimento com HashMap, mas ele quebra uma galho enorme.
Agora é mais fácil falar “depende da necessidade”.
Pelo menos todo mundo dá sua opinião
Quando me refiro a ver se o campo é nulo em primitivos me refiro no seguinte.
class Funcionario
{
private float salario;
// getters and setters
}
Funcionario f = FuncionarioDAO.consultar();
f.getSalario() // opa como eu vejo se é nulo
ou uso
private Float salario;
// agora eu posso ver se é nulo.
sinceramente, ate gostaria que alguem me desse motivos de não usar hashmap.
qual a diferença de ter 30 beans para trafegar dados, ou ter um unico obj para isso.
quase todos frameworks trabalham com hashmap.
alguem???
VO e HashMaps podem ser usados para transportar dados de um tier para outro. Neste caso não são antipatterns pelo contrário.
Agora que eu entendi é que o autor do artigo condena o uso na camada de domínio e negócios, pois quebra a estrutra OO trabalhando com dados generalizados.
Então cv como você trabalha com dados agrupados.
ex:
a média de salário de departamentos. Agrupando por departamento e trazendo o nome de cada responsável.
onde departamento , responsável seriam entidades diferentes.
Se voce quer tanto a media de salario de um departamento, pq nao ter um metodo Departamento.getMedia(), que calcula a media baseando-se nos salarios dos funcionarios que fazem parte dele?
blz, entendi a sua abordagem, mas fica a duvida:
o que o Departamento.getMedia() retornaria, ja que tem dados agrupados de 2 entidades? VO? HashMap? :mrgreen:
blz, entendi a sua abordagem, mas fica a duvida:
o que o Departamento.getMedia() retornaria, ja que tem dados agrupados de 2 entidades? VO? HashMap? :mrgreen:
Nao, Joao… Departamento eh um objeto do seu dominio. Assim como tem getMedia():BigDecimal, tem getResponsavel():Funcionario, e tem getFuncionarios():Set…
Ele nao eh um VO, pq ele nao eh um objeto que serve so pra ser estuprado por um DAO, que manda pro controller fazer autopsia. Ele (oooooh, vejam so!) contem as regras de negocio relacionada a departamentos!
[quote=cv]Nao, Joao… Departamento eh um objeto do seu dominio. Assim como tem getMedia():BigDecimal, tem getResponsavel():Funcionario, e tem getFuncionarios():Set<Funcionario>…
Ele nao eh um VO, pq ele nao eh um objeto que serve so pra ser estuprado por um DAO, que manda pro controller fazer autopsia. Ele (oooooh, vejam so!) contem as regras de negocio relacionada a departamentos! :)[/quote]
blz, acho que agora rolou, objeto do dominio… ele é o responsavel pelas operações, ja me devolvendo o que interessa. tenho que começar a ver as coisas de maneira diferente… :mrgreen:
Isso que o CV colocou é o OO puro.
Mas isso não gera perda de performance.
Cada método faria uma consulta diferente ?
Não vivemos um mundo acadêmico.
Essas abordagens OO são bonitas mas como temos limitações tecnológicas temos que usar recursos que se baseam no bom senso.
é a balanca entre clareza de código X funcionalidade
Também volta avelha discussão do tráfego da rede para objetos remotos.
Isso na camada de negócio é fantastico, mas na camada de serviço tem que ser DTO ou HashMap mesmo.