[quote=rodrigoallemand]Não vejo muita diferença disso aqui…
[code]public class Pessoa{
RepositorioPessoa repositorio;
//get/set
public void insert(){
reporitorio.insert(this);
}
public Set dependentes(){
repositorio.dependentesDe(this);
}
}
public class RepositorioPessoa{
public void Insert(Pessoa pessoa){
//Insert
}
public Set dependentes(){
//Get dependentes
}
}[/code]
… para isso aqui…
[code]@Entity
public class Pessoa{ @ManyToOne
public Set dependentes;
//Get/Set
}
public class RepositorioPessoa{
public void Insert(Pessoa pessoa){
//Insert
}
}[/code]
Alias, vejo sim!! No código abaixo eu escrevo bem menos… e eu não gosto de pensar que “uma pessoa se auto salva a si mesma”…
Parece um negocio sem controle, onde qq coisa se salva, etc… :lol: é brincadeira, ok?[/quote]
Todo o caso é que se formos levar OO ao pé da letra, isso seria o correto, pq todos os comportamentos possíveis para a Pessoa estariam dentro da própria classe(mesmo que implementada através de composição).
[/quote]
Eu discordo, segundo OO, isso fere a regra de responsabilidade da classe, que é alguma coisa dentro das regras de negocio. A partir do momento que nela esta contido o codigo de persistencia ela está fazendo mais coisas do que deveria.
Agora, na pratica eu ja nao sei, nunca usei AR e talvez por isso nao vejo suas vantagens.
A pergunta é sobre Active Record + Java ou Active Record + Domain Driven Design +Java?
A primeira -apesar de dificultada pela verbosidade- eu uso. Acabo de entregar um projeto onde um objeto de negócios era o melhor lugar para a comunicação com o Hibernate. É claro que isso é uma peculiariedade do domínio em questão, o mesmo projeto tinha todos os outros objetos persistidos via DataMapper/DAO.
A segunda, em teoria, é possível mas você teria que fazer do seu objeto um Repositório dele mesmo. Eu nunca vi necessidade para isso utilizando Domain Driven Design.
Todo o caso é que se formos levar OO ao pé da letra, isso seria o correto, pq todos os comportamentos possíveis para a Pessoa estariam dentro da própria classe(mesmo que implementada através de composição).
[/quote]
Eu discordo, segundo OO, isso fere a regra de responsabilidade da classe, que é alguma coisa dentro das regras de negocio. A partir do momento que nela esta contido o codigo de persistencia ela está fazendo mais coisas do que deveria.
Agora, na pratica eu ja nao sei, nunca usei AR e talvez por isso nao vejo suas vantagens.[/quote]
Isso mesmo. Diminui a coesão da classe e ainda aumenta seu acoplamento com entidades alheias ao seu domínio.
Todo o caso é que se formos levar OO ao pé da letra, isso seria o correto, pq todos os comportamentos possíveis para a Pessoa estariam dentro da própria classe(mesmo que implementada através de composição).
[/quote]
Eu discordo, segundo OO, isso fere a regra de responsabilidade da classe, que é alguma coisa dentro das regras de negocio. A partir do momento que nela esta contido o codigo de persistencia ela está fazendo mais coisas do que deveria.
Agora, na pratica eu ja nao sei, nunca usei AR e talvez por isso nao vejo suas vantagens.[/quote]
Sim. Uma coisa a ser lembradaé que Orientação a Objetos em si não conhece persistência. Persistência é uma limitação técnica, o que fazemos com DataMappers, Camadas, ARs e amigos é tentar minimizar o impacto desta.
Phillip, apesar de nunca ter vivido situação parecida, será que é uma peculiaridade do domínio ou a maneira como ocorre a interação entre a camada de domínio e a apresentação?
[editado]
Outra pergunta: como vocês lidaram com os estados (detached, managed). Era sempre merge?