<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "DTO  - dúvida conceitual"]]></title>
		<link>http://www.guj.com.br/posts/list/12.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "DTO  - dúvida conceitual"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ Tava discutindo neste tópico9[url]http://www.guj.com.br/posts/list/23408.java[/url]) sobre DTO´s, e fiquei curioso quanto o conceito.<br /> O que caracterizaria um DTO, uma classe/objeto que seria transportado pelas camadas da aplicação, ou o simples retorno de um método também caracterizaria-se um DTO?<br /> Por exemplo, numa aplicação web, para retornar os dados para uma view, eu executo minhas regras de negócio com meus objetos, e retorno do controller para a view somente uma Collection com as informações/atributos necessários para aquela view. Isso caracteriza um DTO?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125730/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125730/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 09:21:47]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=Rafael Nunes]Tava discutindo neste tópico9[url]http://www.guj.com.br/posts/list/23408.java[/url]) sobre DTO´s, e fiquei curioso quanto o conceito.<br /> O que caracterizaria um DTO, uma classe/objeto que seria transportado pelas camadas da aplicação, ou o simples retorno de um método também caracterizaria-se um DTO?<br /> Por exemplo, numa aplicação web, para retornar os dados para uma view, eu executo minhas regras de negócio com meus objetos, e retorno do controller para a view somente uma Collection com as informações/atributos necessários para aquela view. Isso caracteriza um DTO?[/quote]<br /> DTO nada mais seria que um VO.<br /> Ou seja, uma classe com atributos privados que contém gets e sets para acessar os dados indiretamente.<br /> A collection em si não seria um DTO, mas sim a classe utilizada dentro desta collection<br /> <br /> Me corrijam se tiver engando!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125732/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125732/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 09:27:43]]> GMT</pubDate>
				<author><![CDATA[ kina]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Melhor que passar uma collection é passar um array de structs tipados.<br /> ex:<br /> [code]<br /> <br /> class FuncionarioDTO<br /> {<br />    public int codigo;<br />    public String nome;<br />    public String nomeDepartamento;<br /> }<br /> <br /> class FuncionarioService<br /> {<br />    public FuncionarioDTO[] consultarFuncionarios()<br />    {<br />       //pode ser array, pois para passar para o client tem que desacoplar do server.<br />    }<br /> }<br /> <br /> [/code]<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125734/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125734/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 09:33:24]]> GMT</pubDate>
				<author><![CDATA[ jprogrammer]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote] DTO nada mais seria que um VO.<br /> Ou seja, uma classe com atributos privados que contém gets e sets para acessar os dados indiretamente.<br /> A collection em si não seria um DTO, mas sim a classe utilizada dentro desta collection [/quote]<br /> Na documentação não fala nada sobre getters/setters, diz somente qual a função:<br /> [i][b]Use a Value Object to encapsulate the business data. A single method call is used to send and retrieve the Value Object. When the client requests the enterprise bean for the business data, the enterprise bean can construct the Value Object, populate it with its attribute values, and pass it by value to the client.[/b][/i]<br /> Minha dúvida em específico(e bem besta pelo visto) é se um simples método no meu controller retornando uma Collection, caracterizaria um DTO/VO<br /> <br /> [quote] Melhor que passar uma collection é passar um array de structs tipados[/quote]<br /> <br /> EU discordo, desta forma você teria de ter um VO/DTO pra cada objeto, retornando um array de cada um deles, o que eu estou tentando entender é a forma de retornar os dados para view de uma melhor forma, não fazer gambiarra, mas passar para ela somente o necessário(leia-se não ter de passar 50 objetos com 50 atributos cada e usar só 5 atributos de cada objeto)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125753/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125753/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 09:56:22]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Sim , neste caso você só passará os atributos necessários.<br /> Não é uma cambiarra.<br /> É o que é proposto.<br /> Mas dessa maneira o problema é esse que voce falou.<br /> Eu teria que ter não um DTO para cada objeto, mas sim para cada requisição.<br /> Tem a vantagem de ficar tudo "tipadinho".<br /> Mas a desvantagem de ter muitas classes para fazer muito pouco.<br /> <br /> Pelo que vi os conselhos do pessoal, passar coisas muito genericas não fica legal.<br /> <br /> Do jeito que você quer teria que ser uma collection de hashMaps.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125757/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125757/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 10:04:03]]> GMT</pubDate>
				<author><![CDATA[ jprogrammer]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Qual o problema de retornar objetos normais, só que apenas com os atributos que você vai usar populados?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125762/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125762/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 10:16:20]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Rafael Nunes<br /> <br /> DTO, que quer dizer Data Transfer Object, quer dizer Objeto de tranferência de dados. Mas, para bons programadores, isso não quer dizer exatamente objeto de transferência de dados. Você deve utilizar DTO para resolver o seguinte tipo de problema:<br /> <br /> Por exemplo, suponha que vc deverá fazer vários acessos remotos seguidos para realizar uma tranzação distribuída.  Então vc primeiro chama um método, ele acessa o servidor remoto, vc chama outro método, ele acessa um servidor remoto, e daí vc faz isso de novo.<br /> <br /> O tempo que se gasta fazendo todos estes acessos tem como consequencia uma perda consideravel no tempo de execução da aplicação.<br /> <br /> Então, ao invés de ficar transportando uma renca de objetos um de cada vez, vc coloca todos os objetos (ou os dados dele) em uma objeto só, e passa para o servidor. Então vc perde menos tempo com o transporte de dados.<br /> <br /> Ao invés de acessar um servidor 3 vezes, vc acessou 1 só. É para isso quer serve um DTO.<br /> <br /> Agora Rafael, use somente nestes casos, e nada mais. Não saia inventando DTO pelo seus sitema. O pessoal agui chama esse treco de gambiarra, e realmente é!<br /> <br /> Resumo. Use DTO quando vocÊ precisa fazer muitos acessos remotos. Desta forma ao invés de realizar N conexões, vc realizara apenas uma.<br /> <br /> Abraços!<br /> Thiago Senna<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125776/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125776/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 10:44:45]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Suponha que durante um processo eu utilize 30 objetos, não precisam estar necessariamente com todos os atributos preenchidos, mas o necessário para relizar a tarefa. Depois de realizada, eu preciso retornar para a view dos trinta objetos apenas 5 atributos que estão 'espalhados' entre eles. Como retornar isso sem ser por uma Collection que reuniria o conteúdo dos 5 atributos?(Aí é que está a dúvida, isso seria um DTO?)<br /> E baseando-me na tua sugestão, eu teria de duplicar meus objetos, setando somente os atributos que eu necessito, ou configurar o que eu não preciso como nulo. Creio que fica um tanto inverossímil retornar cinco objetos quando eu necessito somente de cinco atributos.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125777/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125777/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 10:48:32]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote] Agora Rafael, use somente nestes casos, e nada mais. Não saia inventando DTO pelo seus sitema. O pessoal agui chama esse treco de gambiarra, e realmente é!<br /> <br /> Resumo. Use DTO quando vocÊ precisa fazer muitos acessos remotos. Desta forma ao invés de realizar N conexões, vc realizara apenas uma.[/quote]<br /> <br /> Creio que não estou me fazendo entender. Agradeço pela resposta, porém minha dúvida não é [b]quando[/b] usar, isso eu entendi. Minha dúvida é [b]o que[/b] caracteriza um DTO.<br /> <br /> Sendo sucinto e conciso:<br /> Retornar um Collection com atributos dos meus objetos de domínio para a view é um DTO?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125779/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125779/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 10:52:41]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Pelo que eu entendi uma DTO seria nada mais nada menos que um struct que é passado entre tiers.<br /> um struct seria uma classe sem métodos com apenas atributos a serem populados<br /> ex:<br /> [code]<br /> <br /> class Funcionario<br /> {<br />    private int codigo;<br />    private String nome;<br />    private Departamento departamento;<br />    // getters e setters<br /> }<br /> <br /> class Departamento<br /> { <br />    private int codigo;<br />    private String nome;<br /> }<br /> <br /> class ConsultaFuncionarioDTO<br /> {<br />    public int codigoFuncionario;<br />    public int codigoDepartamento;<br />    public String nomeFuncionario;<br />    public String nomeDepartamento;<br /> }<br /> <br /> class FuncionarioService<br /> {<br />     public ConsultaFuncionarioDTO[] consultarFuncionario()<br />     {<br />       Collection funcionarios = Funcionario.consultar();<br />       ConsultaFuncionarioDTO[]  consultaDTO = new ConsultaFuncionarioDTO[funcionarios.size()]  <br />       <br />        Iterator i = funcionarios.iterator();<br />        for (int index = 0; i.hasNext(); i++)<br />        {<br />            Funcionario func = (Funcionario) i.next();<br />            consultaDTO[index] = new ConsultaFuncionarioDTO();<br /> <br />            consultaDTO.codigoFuncionario = funcionario.getCodigo();<br />            consultaDTO.codigoDepartamento = funcionario.getDepartamento().getCodigo();<br />            consultaDTO.nomeFuncionario = funcionario.getNome();<br />            consultaDTO.nomeDepartamento = funcionario.getDepartamento().getNome();<br />  <br />         }<br />  <br />         return consultaDTO;<br />       }<br /> }<br /> <br /> [/code]<br /> <br /> Pode parecer tosco, mas se seguirmos ao pé da letra o que é DTO é isso.<br /> Agora se é necessário usar ou não ?<br /> Eu prefiro a ideia do LIPE.<br /> Passe o objeto.<br /> O problema se o objeto for bem modelado ele terá métodos que vão além de simples accessors e interagem na lógica de negócios.<br /> Nestes casos é melhor usar objetos burros para passar dados.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125794/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125794/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 11:33:12]]> GMT</pubDate>
				<author><![CDATA[ jprogrammer]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Oi.<br /> <br /> Diz o tio Fowler:<br /> <br /> [quote="POEAA"]<br /> Data Transfer Object<br /> <br /> An object that carries data between processes in order to reduce the number of method calls.<br /> [/quote]<br /> <br /> Ou seja: não importa se tem get, se tem set, se tem coleção, sem coleção, é uma gambiarra por si só. A característica do padrão é empacotar o máximo possível (necessário) para amenizar chamadas RPC.<br /> <br /> [quote="POEAA"]<br /> Data Transfer Object is one of those objects our mothers told us never to write. It's often little more than a bunch of fields and the getters and setters for them. The value of this usually hateful beast is that it<br /> result you need to reduce the number of calls, and that means that you need to transfer more data with each d to procall. One way to do this is to use lots of parameters. However, this is often awkwaronly a single value.often impossible with languages such as Java that return The solution Mels How It Works In many ways, amore than a bun<br /> allows you to move several pieces of information over a network in a single call?a trick that's essential for<br /> tributed systems.<br /> [/quote]<br /> <br /> Leiam mais [url=http://www.temporeal.com.br/produtos.php?id=168950]aqui[/url].]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125808/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125808/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 12:08:25]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Mas o que você acha de implementar um tipo de DTO para cada requisição/retorno ?<br /> Teriamos muitas classes "inuteis", mas ficaria tudo bem tipado.<br /> Uma DTO generica deixaria a arquitetura muito pobre.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125828/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125828/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 12:52:26]]> GMT</pubDate>
				<author><![CDATA[ jprogrammer]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Putz, desisto.<br /> Ou eu sou muito prego e não consegui entender a mensagem subentendida.<br /> Ou eu não estou sabendo me expressar.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125829/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125829/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 12:53:43]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Você falou que tem dúvida sobre o que caracteriza um DTO. O Shoes respondeu citando o PoEAA.<br /> [quote] An object that carries data between processes in order to reduce the number of method calls.[/quote]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125849/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125849/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 13:20:45]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=Rafael] Retornar um Collection com atributos dos meus objetos de domínio para a view é um DTO?[/quote]<br /> <br /> Hummm.. naum... acredito que não!<br /> <br /> DTO é uma gambiarra, que tem um monte de atributo e gets e sets. Vc  vai usar ele quando vc tem que chamar vários métodos remotos. Mas ao invés de chamar uma renca de metodo remoto, vc cria um método que recebe o DTO e retira os dados de dentro dele, e finalmente recompões os objetos de negócio!<br /> <br /> Como vvc tá implementando não importa. Vc pode até retornar uma collection de DTO. As formas de implementações são várias.<br /> <br /> Entenda DTO como uma gambiarra que se faz necessário para transmitir uma coleação de informação que podem ser referentes a mais de um objeto de negócio, que quando chega no seu destino ele é utilizado para reconstruir todos os dados dos objetos de negócio.<br /> <br /> Abraços!<br /> Thiago]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125857/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125857/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 13:27:57]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ como o Shoes falou antes qualquer estrutura que vc use para transportar dados entre as camadas da sua app é um dto.<br /> <br /> so não acho que seja uma gambiarra, todo mundo fala isso, alguns so pq viram no forum.<br /> ele tem sua utilidade em cenarios especificos.<br /> se vc tem sua aplicação distribuida, vai precisar de uma estrutura para transportar os dados.<br /> <br /> agora, se existe uma melhor maneira de utilizalos ae ja não sei...<br /> <br /> []'s<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125868/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125868/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 13:44:44]]> GMT</pubDate>
				<author><![CDATA[ jgbt]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Mas pelo q entendi o Shoes não criticou sua utilidade, o DTO tem utilidade mas ainda assim é uma gambiarra... <br /> Por exemplo, o mapeamento Objeto-Relacional é extremamente funcional e útil, talvez não exista solução melhor, mas ainda assim é uma gambiarra. ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/125909/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/125909/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 28 Apr 2005 14:47:56]]> GMT</pubDate>
				<author><![CDATA[ TedLoprao]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ O grande ponto a se grifar eh o "se voce tem uma aplicacao [b]distribuida[/b]...": DTOs sao um design pattern, Local-DTOs sao um anti-pattern. <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126085/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126085/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 05:53:52]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=cv]O grande ponto a se grifar eh o "se voce tem uma aplicacao [b]distribuida[/b]...": DTOs sao um design pattern, Local-DTOs sao um anti-pattern. <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">[/quote]<br /> <br />   Ai vem uma outra grande pergunta. Quantos projetos sao realmente distribuidos que justifiquem o uso de DTO?<br /> <br />   ]['s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126118/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126118/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 09:32:57]]> GMT</pubDate>
				<author><![CDATA[ fabio.patricio]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=fabgp2001]<br /> Ai vem uma outra grande pergunta. Quantos projetos sao realmente distribuidos que justifiquem o uso de DTO?<br /> [/quote]<br /> <br /> Não precisa ser um sistema monstro, mas você está certo no que acho que tentou dizer: 99% dos posts no GUJ sobre isso são sistemas que não precisam de DTOs.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126124/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126124/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 09:42:49]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Me lembro como se fosse hoje quando tava começando o meu projeto de final de curso e usei a seguinte estrutura<br /> <br /> view --&gt; controle --&gt; façade --&gt; negocio --&gt; DTO --&gt; DAO<br /> <br /> Fiz diagrama de classes e tudo!!! Achei que eu estava arrasando por que haviam 8 patterns em meu sistema que não tinha tem 10 classes de negócio direito!<br /> <br /> Daí eu mostrei para alguns professores, e todos eles me parabenizaram!!<br /> Aff.. Fiquei tão orgolhoso!!! <img src="http://www.guj.com.br/images/smilies/499fd50bc713bfcdf2ab5a23c00c2d62.gif" border="0"> <br /> <br /> Abraços!<br /> Thiago]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126139/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126139/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:03:35]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote] view --&gt; controle --&gt; façade --&gt; negocio --&gt; DTO --&gt; DAO [/quote]<br /> Antes que me perguntem pq fiz isso... eu digo!<br /> <br /> Tinha acabado de ler alguns dos capítulos do livro Core J2ee Patterns!<br /> Imaginem um cabeção e mala que nem eu no 3º ano da faculdade diante de um livro desses! Ele chega a pensar que está no paraíso!<br /> <br /> Abraços!<br /> Thiago]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126141/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126141/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:07:49]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Mas o DTO não deveria estar entra o controle e o facade  ?<br /> <br /> view --&gt; controle --&gt; DTO --&gt; façade --&gt; negocio --&gt;  DAO   ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126145/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126145/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:13:33]]> GMT</pubDate>
				<author><![CDATA[ jprogrammer]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=pcalcado][quote=fabgp2001]<br /> Ai vem uma outra grande pergunta. Quantos projetos sao realmente distribuidos que justifiquem o uso de DTO?<br /> [/quote]<br /> <br /> Não repcisa ser um sistema mosntro, mas você está cerot no que acho que tentou dizer: 99% dos posts no GUJ sorbe isso são sistemas que não precisam de DTOs.[/quote]<br /> <br />   Isso, mas digo mais, acho que mais de 90% dos sistemas desenvolvidos em Java nao sao distribuidos.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126147/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126147/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:14:26]]> GMT</pubDate>
				<author><![CDATA[ fabio.patricio]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=jprogrammer]Mas o DTO não deveria estar entra o controle e o facade  ?<br /> <br /> view --&gt; controle --&gt; DTO --&gt; façade --&gt; negocio --&gt;  DAO   [/quote]<br /> <br />   Porque o DTO esta em uma camada se ele so fica zanzando no sistema?<br />   Existem sistemas onde o DTO é criado na View e vai sendo enviado até o DAO, nao entendo o porque dessa distribuicao demostrada ai.<br /> <br />   ]['s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126148/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126148/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:15:56]]> GMT</pubDate>
				<author><![CDATA[ fabio.patricio]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=fabgp2001]<br />   Isso, mas digo mais, acho que mais de 90% dos sistemas desenvolvidos em Java nao sao distribuidos.[/quote]<br /> <br /> Eu também. Mais até, bem mais.<br /> <br /> Hoje em dia eu trabalho com cluster e clientes remotos, e mesmo assim em uns dois projetos apenas. De resto, nada justificaria um DTO para aplicações web como as que eu já fiz tantas por aí.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126150/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126150/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:20:11]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ Pelo o que eu li um DTO serve para diminuir a sobrecarga na rede devido a chamadas de métodos remotos, certo? É tipo "zipar" os dados e mandar de uma vez só, em vez de um a um, certo?<br /> <br /> E o pessoal confunde e usa DTO para simplesmente para acessar banco de dados, certo? Eu mesmo confundo (ou confundia, sei lá) um pouco, achando que aqueles beans burros que representam as entidades do BD eram DTOs.<br /> <br /> Certo???<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126153/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126153/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:21:16]]> GMT</pubDate>
				<author><![CDATA[ renatosilva]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=renato3110]<br /> É tipo "zipar" os dados e mandar de uma vez só, em vez de um a um, certo?<br /> E o pessoal confunde e usa DTO para simplesmente para acessar banco de dados, certo? <br /> [/quote]<br /> <br /> Na mosca!<br /> <br /> A cosia qeu me dá mis medo quando respondendo alguém aqui ou em alguma lsita é:<br /> <br /> [quote="JavaBean Addicted"]<br /> Então, eu tô fazendo meu sistema com camadas, tenho uma Action struts que chama meu [b]AdicionarUsuarioAction[/b], que cria um [b]UsuarioDTO[/b] que passa para meu [b]UsuarioBO]<br /> [/b] que possui um método chamado <br /> <br /> public void salvar(String login, string senha);<br /> <br /> Que chama meu obejto [b]UsuarioDAO[/b] passando o [b]UsuarioDTO[/b]<br /> ...<br /> [/quote]<br /> <br /> Onde eles arrumam tanta criatividade?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126156/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126156/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:26:19]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Jprogrammer.. obrigado por me lembrar.. a estrutura que eu coloquei tava errada!<br /> <br /> Na verdade eu tinha feito assim (Podem acreditar.. é sério)<br /> <br />  view --&gt; DTO --&gt; controle --&gt; DTO --&gt; façade --&gt; negocio --&gt; DTO --&gt; DAO<br /> <br /> <br />  [quote=Pensamento do Thiago Senna] Agora o Shoes vai ter um Enfarte!!![/quote]<br /> <br /> Abraços!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126160/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126160/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:32:26]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=renato3110]E o pessoal confunde e usa DTO para simplesmente para acessar banco de dados, certo? Eu mesmo confundo (ou confundia, sei lá) um pouco, achando que aqueles beans burros que representam as entidades do BD eram DTOs.[/quote]<br /> <br />   Nao só isso, acho que a maior confusao é com as siglas. DTO, VO, Pojo, Java Beans pra muitos isso é tudo igual e sabemos que isso nao é verdade.<br />   Exemplo, quando o Hibernate diz que precisa de POJO pra persistir os objetos, muitos acham que sao obrigados a usar DTO por isso.<br /> <br />   ]['s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126162/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126162/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 10:42:59]]> GMT</pubDate>
				<author><![CDATA[ fabio.patricio]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=Fabgp] Nao só isso, acho que a maior confusao é com as siglas. DTO, VO, Pojo, Java Beans pra muitos isso é tudo igual e sabemos que isso nao é verdade.<br /> Exemplo, quando o Hibernate diz que precisa de POJO pra persistir os objetos, muitos acham que sao obrigados a usar DTO por isso. [/quote]<br /> <br /> Não é somente isso!<br /> Na verdade, temos o costume de pensar que o ideal é contruir um sistema super flexível há mudanças! E muitos pensam que software flexível é sistema enfestado de patterns!<br /> Daí, a falta de experiência fazem com que nós interpretemos estes patterns (DTO) desta maneira.<br /> <br /> O problema é que todo mundo quer sistema flexível. O lógico parece ser que um sistema burocrático é o mais ideal para as mudanças, enquanto metodologias ágeis felizmente traz uma outra abordagem, no qual sistemas flexíveis em mudanças são programas com código simples e com bém testado! (resumidamente)<br /> <br /> Abraços!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126173/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126173/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 11:05:30]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ Só para encher o saco, o Hibernate não precisa hehe só o construtor default é necessário, infelizmente.<br /> <br /> E, só para alfinetar:<br /> "Pessoas inventam porcentagens para ganhar credibilidade. 87% das pessoas sabem disso." - Homer Simpson<br /> <img src="http://www.guj.com.br/images/smilies/49869fe8223507d7223db3451e5321aa.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/126175/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/126175/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 29 Apr 2005 11:08:23]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=fabgp2001]Nao só isso, acho que a maior confusao é com as siglas. DTO, VO, Pojo, Java Beans pra muitos isso é tudo igual e sabemos que isso nao é verdade.[/quote]<br /> <br /> Pra mim e (e?) tudo a mesma coisa... leio vc precisa de um (cole aqui uma das sopa de letrinhas supracitada) e no final das contas vejo um JavaBean. Não e pra pensar que e tudo a mesma coisa?<br /> <br /> Depois de ler esse topico entendi o que e um DTO (eu acho) e que na verdade nao preciso dele pra p* [piiii] nenhuma.<br /> <br /> Agora:<br /> VO = DTO?<br /> Pojo = JavaBean?<br /> <br /> Deus me livre!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/150637/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/150637/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 19 Jul 2005 14:52:58]]> GMT</pubDate>
				<author><![CDATA[ passos]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=passos][quote=fabgp2001]Nao só isso, acho que a maior confusao é com as siglas. DTO, VO, Pojo, Java Beans pra muitos isso é tudo igual e sabemos que isso nao é verdade.[/quote]<br /> <br /> Pra mim e (e?) tudo a mesma coisa... leio vc precisa de um (cole aqui uma das sopa de letrinhas supracitada) e no final das contas vejo um JavaBean. Não e pra pensar que e tudo a mesma coisa?<br /> <br /> Depois de ler esse topico entendi o que e um DTO (eu acho) e que na verdade nao preciso dele pra p* [piiii] nenhuma.<br /> <br /> Agora:<br /> VO = DTO?<br /> Pojo = JavaBean?<br /> <br /> Deus me livre![/quote]<br /> <br /> Sim.. VO = TO = VO != boas práticas em sistemas não distribuídos!<br /> <br /> POJO != Java Bean..<br /> <br /> quando se fala de java bean me lembra mais a especicificação de se usar os metodos getAlgumaCoisa, setAlgumaCoisa, isBoolean e por ai vai...<br /> <br /> POJO, por sua vez é mais flexível. Pojo nada mais é do que um objeto java simples, sem frescura, sem vaidade, sem batom e sem botox! Se vc vai usar o nome dos métodos igual aos do java bean nele, vc pode fazer isso tranquilamento, assim como muitos fazem! ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/150654/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/150654/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 19 Jul 2005 15:27:44]]> GMT</pubDate>
				<author><![CDATA[ Thiago Senna]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=Thiago Senna]<br /> quando se fala de java bean me lembra mais a especicificação de se usar os metodos getAlgumaCoisa, setAlgumaCoisa, isBoolean e por ai vai...<br /> [/quote]<br /> <br /> Mais que isso, JavaBeans é uma especificação de componentes bem adiantadinha pra sua época, mas que não funfou. O que sobrou dela na maiorida das vezes são frameworks que fazem reflection beaseados em set/Get/Construtor vazio e um ou outro uso de BeanInfo.<br /> <br /> Na verdade, essa convenção existe mesmo em C++. Não sei se foi influência de Java (sacrilégio!!!!!), mas que tem tem.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/150769/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/150769/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 19 Jul 2005 21:02:01]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ <a class="snap_shots" href="http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs" target="_blank" rel="nofollow">http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs</a>]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/257938/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/257938/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 4 Jan 2007 01:47:00]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=Filipe Sabella]Qual o problema de retornar objetos normais, só que apenas com os atributos que você vai usar populados?[/quote]<br /> <br /> Felipe creio que isso não seja uma boa maneira....o bom é ter o seu objeto sempre completo fica meio estranho voce passar um objeto em que voce só tem um dado, se for assim é preferível retornar um array de string....sei lá o o tipo dos seus dados mas nunca o objeto pela metade.....]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/535223/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/535223/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 7 Aug 2008 15:09:41]]> GMT</pubDate>
				<author><![CDATA[ Sorriso]]></author>
			</item>
			<item>
				<title>Re: DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=Sorriso][quote=Filipe Sabella]Qual o problema de retornar objetos normais, só que apenas com os atributos que você vai usar populados?[/quote]<br /> <br /> Felipe creio que isso não seja uma boa maneira....o bom é ter o seu objeto sempre completo fica meio estranho voce passar um objeto em que voce só tem um dado, se for assim é preferível retornar um array de string....sei lá o o tipo dos seus dados mas nunca o objeto pela metade.....[/quote]<br /> <br /> hã ?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/535442/re-dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/535442/re-dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 7 Aug 2008 21:53:51]]> GMT</pubDate>
				<author><![CDATA[ Alessandro Lazarotti]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Importante:<br /> [b]<br /> DTO não é um javabeans com getters e setters.<br /> DTO não é o mesmo que um Value Object.<br /> DTO não é um anti-padrão, nem o Fowler falou que DTO é um anti-padrão.[/b]<br /> <br /> Recomendo:<br /> (Re)Ler com atenção o que o Shoes, CV  e Fowler ([url]http://martinfowler.com/bliki/AnemicDomainModel.html[/url]) escreveram.<br /> <br /> E, muito importante...<br /> [url=http://blog.rafaelferreira.net/2007/02/design-patterns-are-not-recipes.html]Padrões não são receitas![/url]<br /> <br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/535866/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/535866/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 13:24:52]]> GMT</pubDate>
				<author><![CDATA[ rodrigousp]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ E digo mais... a resposta do Rafael é mesmo muito boa!<br /> [quote]<br /> Agora, faço a seguinte pergunta: Eu devo julgar os padrões pela intenção ou pela "implementação" (isto é, a descrição do Padrão no GoF, "obsessivo" por heranças)?[/quote]<br /> <br /> [quote=Rafael Ferreira]<br /> Vou deixar o John Vlissides responder essa:<br /> ?It seems you can?t overemphasize that a pattern?s Structure diagram is just an example, not a specification. It portrays the implementation we see most often. As such the Structure diagram will probably have a lot in common with your own implementation, but differences are inevitable and actually desirable. At very least you will rename the participants as appropriate for your domain. Vary the implementation trade-offs, and your implementation might start looking a lot different from the Structure diagram.<br /> As for whether one is following the pattern or not, who cares? The pattern is a means to an end, not an end itself. Following it in any strict sense is immaterial. If the pattern solves your problem directly, that?s great; if you have to bend it a bit, that?s great too. Even if the pattern merely inspires you toward an altogether different solution, it has still proven useful. The only potential problem here lies in the documentation phase, when you?re describing your solution in terms of patterns. You don?t want to mislead someone with irrelevant patterns. If you identify a set of classes as adhering to a pattern, make sure they fulfill the pattern?s intent. If the connection is tenuous, don?t mention the pattern; otherwise you?re sure to confuse more than clarify. ?[/quote]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/535876/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/535876/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 13:30:14]]> GMT</pubDate>
				<author><![CDATA[ rodrigousp]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=rodrigousp]<br /> E, muito importante...<br /> [url=http://blog.rafaelferreira.net/2007/02/design-patterns-are-not-recipes.html]Padrões não são receitas![/url]<br /> [/quote]<br /> <br /> Essa teria graça se não fosse triste.<br /> Padrões não são receitas de bolo, realmente. Não são "10 passos para a classe maravilhosa". Isso é verdade.<br /> Mas daí a menosprezar os padrões ... peraí ... <br /> Padrões são coisas série. Ou vc segue ou não segue. Mesmo que vc se sinta inspirado, se vc não segue o padrão à risca, <br /> o que vc obtem não é uma implementação do padrão. O detalhes é saber o que é o "padrão à risca" e isso sim é uma coisas metafisica. Mas isso apenas porque os livros de padrões são [u]catálogos [/u]e não teses sobre axiomática.<br /> Vc pode definir os padrões sob a forma de teoremas derivados "matemáticamente" da axiomática de OO. Mas isso seria um texto<br /> chato que 95%  das pessoas passaria longe. Com a ideia de que o padrão é uma receita (embora não seja realmente, sim) essas 95% das pessoas pelo menos vão aceitar a ideia. <br /> <br /> O que é triste é ter que ler que prototype , mediator e façade são tipos semelhantes de padrões. Essa doeu. <br /> Claro que quem defende que padrões são felxiveis, não são sérios e são meros "guias" dá-se ao luxo de dizer uma coisa dessas.<br /> Para quem acha que padrões são colorários dos axiomas de OO isso equivale a dizer que a operação de soma, divisão e conjugação são tipos semelhantes de operação...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536020/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536020/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 15:47:00]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Existe necessidade de ser agressivo quando se posta no forum???<br /> Juro que não entendi a agressividade gratuita. <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> <br /> <br /> De qualquer forma, seu argumento vai de encontro à definição de padrão. Se padrões são soluções recorrentes, identificado em situações diferentes... ninguém estava seguindo nada à risca. Nas palavras do fowler: [quote]"One of the interesting things here is that a singular solution can often lead to a recurrent pattern. This usually crops up when you see two different singular solutions which look completely different on the surface, yet have a deeper similarity"[/quote].<br /> <br /> Padrões são sérios, e são coisas importantes. Mas é preciso entendê-los e não vê-los como receitas. <br /> Um ótimo exemplo disso é o DTO. O padrão fala do problema de usar vários getters e setters entre sistemas distribuídos. Isso seria muito ruim.... Ao invés disso, sugere-se enviar um objeto que encapsule todas essas informações. Ponto. <br /> <br /> O padrão não dita que você não pode colocar código de validação, comportamento, etc nos DTOs.<br /> <br /> Outro excelente exemplo é o padrão strategy. Sugiro que as pessoas leiam a descrição do padrão e comparem com a idéia de Interface do Java. Observe que no C/C++ e no Smalltalk não existe Interface... O que você acham? O conjunto List + implementações (ArrayList, LinkedList, etc) não implementa o padrão Strategy? Pattern é isso, uma solução recorrente (um conjunto de melhores práticas) para problemas recorrentes.<br /> <br /> <br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536073/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536073/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 16:23:14]]> GMT</pubDate>
				<author><![CDATA[ rodrigousp]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Aos participantes gostaria de indicar este livro:<br /> <br /> [b]REFATORAÇAO PARA PADROES<br /> Autor:  KERIEVSKY, JOSHUA<br /> Editora: ARTMED<br /> Assunto: INFORMATICA-PROGRAMAÇAO[/b]<br /> <br /> O autor aconcelha a ler o livro com a presença de outro livro do Mr. Martin Fowler REFACTORING IMPROVING THE DESIGN OF EXISTING CODE pois ele faz várias referencias sobre este livro.<br /> <br /> P.S. O livro é em ingles mas o traduzido está com a qualidade aceitavel, vale a pena dar uma olhada.<br /> <br /> Ahhh...já ia esquecendo neste livro não fala de DTO rsrsrsrsr.<br /> <br /> flw<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536090/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536090/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 16:47:48]]> GMT</pubDate>
				<author><![CDATA[ fantomas]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ rs....<br /> engraçadinho...<br /> <br /> Ahhh...já ia esquecendo neste livro não fala de python. hahahahah!<br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536097/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536097/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 16:57:37]]> GMT</pubDate>
				<author><![CDATA[ rodrigousp]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=rodrigousp]Existe necessidade de ser agressivo quando se posta no forum???<br /> Juro que não entendi a agressividade gratuita. <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> <br /> [/quote]<br /> <br /> Juro que não entendi onde está a agressividade gratuita.<br /> <br /> [quote]<br /> De qualquer forma, seu argumento vai de encontro à definição de padrão. Se padrões são soluções recorrentes, identificado em situações diferentes... ninguém estava seguindo nada à risca. Nas palavras do fowler: [quote]"One of the interesting things here is that a singular solution can often lead to a recurrent pattern. This usually crops up when you see two different singular solutions which look completely different on the surface, yet have a deeper similarity"[/quote].<br /> [/quote]<br /> <br /> Nas minhas próprias palavras:<br /> "Padrões são colorários dos axiomas de OO"<br /> <br /> Eles não aparecem do nada como o Fowler expressa , eles está lá sempre. <br /> Se vc seguir as regras OO ( os axiomas , como SoC, IoC , encapsulamento, etc...) vc tem um código enxuto . Mesmo que vc não saiba os nomes dos padrões que acabou de usar, eles estão lá. <br /> Quando vc identifica uma solução isso não acontece porque vc está notou uma coincidencia, e sim porque vc está vendo as regras funcionarem. Elas funcionam sempre da mesma forma e por isso as "coincidencias" são recorrentes. <br /> <br /> [quote]<br /> O padrão não dita que você não pode colocar código de validação, comportamento, etc nos DTOs.<br /> [/quote]<br /> <br /> Pois não. Mas regras mais importantes ditam, como o SoC.<br /> O que vc está dizendo é que se eu pegar um pojo da vida o fizer serializable e colocar um monte de codigo de validação, colocar o construtor privado , colocar get/set paras os atributos, colocar um método estático para retornar o objeto que eu crio dando clone de um atributo estático privado e final na classe eu estarei usando : Prototype (clone copy), Factory-Method (método de criação),  TO (serializable) e Bean (get/set).<br /> Não. Vc está fazendo apenas uma salada de frutinhas e pior, violando o SoC. <br /> Em suma, se viola o SoC o seu codigo não pode ser considerado bom, muito menos um padrão.<br /> <br /> [quote]<br /> Outro excelente exemplo é o padrão strategy. Sugiro que as pessoas leiam a descrição do padrão e comparem com a idéia de Interface do Java. Observe que no C/C++ e no Smalltalk não existe Interface... O que você acham? O conjunto List + implementações (ArrayList, LinkedList, etc) não implementa o padrão Strategy? <br /> [/quote]<br /> <br /> Interfaces são constutos uteis ao padrão strategy, mas não são a "implementação do padrão strategy" isso é absurdo.  Strategy pode ser feito com herança normal se não existissem interfaces. <br /> ArrayLisr , etc... sim são estratégias de List que por sua vez é estratégia de Collection. Isso sim. Mas nunca "interface" per se será um padrão. <br /> <br /> Como os texto que citou falam : padrão é algo que não existe na linguagem. É algo que vc [u]faz com[/u] a linguagem. <br /> <br /> [quote]<br /> Pattern é isso, uma solução recorrente (um conjunto de melhores práticas) para problemas recorrentes.<br /> [/quote]<br /> <br /> Padrões não são conjuntos de melhores práticas, são o resultado direto do seguimento coerente dos principios de OO. Quando vc aplica os principios de OO a um problema vc obtem um resultado. Se aplicar de novo os mesmos princípios vc obtem o mesmo resultado. A aplicação dos principios é complexa, por isso vc pula essa fase. Dai quand vc tem um problema vc tem a solução. Mas ela não aparece magicamente.<br /> <br /> Um exemplo, a lei de pitagoras para a relação entre os catetos e a hipotenusa de um triangulo retangulo pode ser usada diretamente sem ter que a deduzir a todo o momento. O mesmo que a as leis de newton. <br /> Ou seja, se vc tem um problema vc aplica o que já sabe e obtem um resultado. Vc não perde tempo deduzindo a solução a partir de principios básicos cada vez que tem um problema. Da mesma forma vc não deduz a solução para um problema de OO a cada vez que precisa, vc faz isso as primeiras vezes e depois vc já sabe a solução e aplica. Vc cataloga as soluções para fácil uso e pronto. <br /> As solução advem dos principios. Os padrões são atalhos. Dado um problema o padrão dá a solução. Mas o padrão contêm em si todo o processo de aplicação dos princípios da OO.<br /> <br /> Padrão não são receitas de bolo, mas são mais que guias: são corolários. Ou seja, não é possivel, para o mesmo problema encontrar outra solução diferente. Se fosse guias ou receitas poderiam ser encontradas outras formas. <br /> <br /> O que temos diferente são as implementações. Ai sim, existem muitas variantes. Mas o padrão não inclui a implementação, por isso a variedade de implementações não afeta em nada a realidade de que o padrão é univocamente definido pelo problema e pela aplicação dos axiomas de OO.<br /> <br /> <br /> <br /> [/quote]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536194/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536194/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 8 Aug 2008 23:03:12]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Esse assunto é muito jóia...<br /> <br /> Eu enfatizo que o conceito do padrão é mais importante que a estrutura. Veja:<br /> <br /> [quote]O que vc está dizendo é que se eu pegar um pojo da vida o fizer serializable[/quote]<br /> ok <br /> <br /> [quote]e colocar um monte de codigo de validação,[/quote]<br /> A validação pode ficar nos setters, correto!? Se os getter e setters só atribuirem/devolverem os valores da propriedades seriam só idiossincrasia para acessar a propriedade internas do objeto. <br /> <br /> [quote]colocar o construtor privado,[/quote]<br /> Huh(vamos ver...)<br /> <br /> [quote]colocar get/set paras os atributos, [/quote]<br /> ok<br /> <br /> [quote]colocar um método estático para retornar o objeto que eu crio dando clone de um atributo estático privado e final na classe[/quote]<br /> Ops...<br /> <br /> [quote] eu estarei usando : Prototype (clone copy),[/quote]<br /> ok! Se é interessante clonar seu objeto, não tem nada de errado com isso. Ainda não vi a motivação mas pode ser que faça sentido. Sei lá, vai ver que você esteja fazendo um joguindo de carros e o servidor disponibiliza novos modelos de carros. Cada cliente recebe os modelos de carro e permite que usuário faça modelos personalizados a partir desses. (Serializável e clonável). Nesse caso o modelo segue o Prototype.<br /> <br /> [quote]Factory-Method (método de criação),[/quote]<br /> Aí não. Eu falei que o conceito do padrão é importante, não a estrutura. Usar um método para criar outro não faz um "factory method". Existe uma motivação para o Factory Method e não existe nenhuma motivação na saladinha.<br /> <br /> [quote] TO (serializable) [/quote]<br /> Pode ser que sim... desde que a motivação coincida com o padrão. No exemplo do jogo do carrinho seria uma estupidez os clientes serem informados de propriedade por propriedade de cada modelo. É mais inteligente o servidor enviar todo o objeto. Esse é um exemplo do uso do DTO.<br /> <br /> [quote]e Bean (get/set). [/quote]<br /> Isso também não. Para começar que um Javabeans é um componente de software, não um padrão. E existe uma especificação que dita quando uma classe Java pode ser chamada de Javabeans... De forma simplificada:<br /> <br /> [quote]<br />  The class must have a no-argument public constructor. This allows easy instantiation within editing and activation frameworks.<br />  The class properties must be accessible using get, set, and other methods (so-called accessor methods), following a standard naming convention. This allows easy automated inspection and updating of bean state within frameworks, many of which include custom editors for various types of properties.<br />   The class should be serializable. This allows applications and frameworks to reliably save, store, and restore the bean's state in fashion that is independent of the VM and platform.<br /> [/quote]<br /> <br /> Ainda no exemplo dos carrinhos, o código não precisa ser um padrão. Mas, alguns padrões podem ser encontrados na resolução desse problema.<br /> <br /> [quote]ArrayLisr , etc... sim são estratégias de List que por sua vez é estratégia de Collection. Isso sim. Mas nunca "interface" per se será um padrão. [/quote]<br /> Concordo plenamente!!!<br /> <br /> Sobre a parte de corolários, etc... acho que não podemos fazer tal afirmação. A demonstração rigorosa que um padrão deriva matematicamente de "axiomas de OO" não deve ser alguma coisa fácil, talvez nem seja possível... Seria realmente incrível provar que dado um contexto(limitações) e um problema (necessidades) não seria possível encontrar um modelo melhor do que o modelo de um certo padrão. Mas por enquanto isso é uma especulação (conjectura) não um teorema.<br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536506/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536506/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Sun, 10 Aug 2008 21:07:56]]> GMT</pubDate>
				<author><![CDATA[ rodrigousp]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=rodrigousp]<br /> [quote] TO (serializable) [/quote]<br /> Pode ser que sim... desde que a motivação coincida com o padrão. No exemplo do jogo do carrinho seria uma estupidez os clientes serem informados de propriedade por propriedade de cada modelo. É mais inteligente o servidor enviar todo o objeto. Esse é um exemplo do uso do DTO.<br /> <br /> [quote]e Bean (get/set). [/quote]<br /> Isso também não. Para começar que um Javabeans é um componente de software, não um padrão. E existe uma especificação que dita quando uma classe Java pode ser chamada de Javabeans... De forma simplificada:<br /> [/quote]<br /> <br /> <br /> Vc passou longe do ponto. O ponto era :misturar um monte de pedaços de cada padrão não significa usar o padrão.  <br /> Tlv vc defenda que o conceito do padrão é mais importante que a implementação. Tudo bem. Mas não era isso que o blog que vc apontou como justificativa defendia. Ha uma enorme confusão de padrões lá. Era disso que estava falando. <br /> <br /> Eu não falei em javabean eu falei em [url=http://sergiotaborda.wordpress.com/java/patterns/bean/]bean[/url]. Sim, JavaBean é um componente e uma especifiação, mas bean é algo mais simples.<br /> Todos os javabeans são beans, mas o contrário não é verdade.<br /> <br /> <br /> <br /> [quote]<br /> Sobre a parte de corolários, etc... acho que não podemos fazer tal afirmação. A demonstração rigorosa que um padrão deriva matematicamente de "axiomas de OO" não deve ser alguma coisa fácil, talvez nem seja possível... Seria realmente incrível provar que dado um contexto(limitações) e um problema (necessidades) não seria possível encontrar um modelo melhor do que o modelo de um certo padrão. Mas por enquanto isso é uma especulação (conjectura) não um teorema.<br /> [/quote]<br /> <br /> Dificil ? ... hummm... não importa se é difícil, importa que é possível. O ponto é que padrão tlv sejam encontrados empiricamente, mas eles têm uma base teórica. Sem ela, não existe padrão. É no máxima uma boa prática e no pior caso uma gambiarra.<br /> Mas nem é tão dificil assim:<br /> O padrão Composite, por exemplo, nasce diretamente do conceito de composição que é uma forma de relacionar objetos.<br /> O padrão Composite não é qualquer tipo de composição. É um tipo especial onde o composto é da mesma classe do componente. è isso que marca a diferença e o padrão. Não é difícil entender que composição é uma relação de objetos diretamente derivada do próprio conceito de objeto e portanto o Composite é um padrão derivado matematicamente de axiomas OO ( a existência de objetos é o primeiro axioma)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536600/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536600/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Mon, 11 Aug 2008 08:29:57]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote]Vc passou longe do ponto. [/quote]<br /> Desculpa ai (1)... Eu estava só provando o que eu havia falado antes: que o padrão DTO NÃO dita um Objeto anêmico.<br /> <br /> [quote]Eu não falei em javabean eu falei em bean. [/quote]<br /> Desculpa ai (2) ... Na literatura que eu conhecia, beans e Javabeans eram sinônimos. E um Javabeansprecisava ter construtor sem parâmetros público. Então apesar dos getters e setters, não poderíamos chamar aquele exemplo de Javabeans.<br /> <br /> <br /> [quote]<br /> Mas nem é tão dificil assim: <br /> O padrão Composite, por exemplo, nasce diretamente do conceito de composição que é uma forma de relacionar objetos. (...)<br /> [/quote]<br /> Eu não diria que esta essa é a demonstração mais formal que conheço. Na minha opinião seria preciso tomar o padrão composite, como apresentado pelo Gof e sua [b]"Estrutura"[/b]: Component, Composite and Leaf. Então, seria preciso demonstrar que aplicando os aximos do OO teríamos essas entidades e teríamos que tomar o cuidado para mostrar como cada uma dessas partes atuam não deixando dúvidas se Component pode ou não ter <br /> métodos de manipulação de listas, se um autorelacionamento pode ou não desempenhar o papel de composição, etc.<br /> <br /> [b]Eu concordo plenamente que existe uma base teórica importante sobre os padrões de projeto. [/b] <br /> Mas volto a enfatizar que o conceito é mais importante que a estrutura.<br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536646/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536646/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Mon, 11 Aug 2008 09:11:41]]> GMT</pubDate>
				<author><![CDATA[ rodrigousp]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=rodrigousp]<br /> <br /> [quote]<br /> Mas nem é tão dificil assim: <br /> O padrão Composite, por exemplo, nasce diretamente do conceito de composição que é uma forma de relacionar objetos. (...)<br /> [/quote]<br /> Eu não diria que esta essa é a demonstração mais formal que conheço. <br /> [/quote]<br /> <br /> Não foi intenção ser formal. Embora "formal" seja relativo aqui.<br /> <br /> [quote]<br /> Na minha opinião seria preciso tomar o padrão composite, como apresentado pelo Gof e sua [b]"Estrutura"[/b]: Component, Composite and Leaf. <br /> [/quote]<br /> <br /> Ora ai é que está. Porque como paresentado pelo GoF ? Eles são algum tipo de deuses ? E aliás as ideias deles são para C++<br /> Se é verdade que a base toerica é mais importante que a implementação não importa que seja em C++, mas vai dai, também não importa que seja do GoF.<br /> <br /> [quote]<br /> Então, seria preciso demonstrar que aplicando os aximos do OO teríamos essas entidades e teríamos que tomar o cuidado para mostrar como cada uma dessas partes atuam não deixando dúvidas se Component pode ou não ter <br /> métodos de manipulação de listas, se um autorelacionamento pode ou não desempenhar o papel de composição, etc.<br /> [/quote]<br /> <br /> não. A implementação é irrelevante. métodos de manipulação de listas são irrelevantes. Podem ser adicionados se necessário Por exemplo, se a composição for imutável esses métodos não podem existir. Mas isso é detalhe de implementação.<br /> Auto-relacionamento é um tpo de relacionamento e portanto auto-relacionamento pode ser composição e pode ser visto como um corolário do padrão. Esse tipo de coisas não entram no padrão. <br /> <br /> O padrão é definido como a composição (operação entre objetos) recursiva. Ou seja, um objeto da classe X pode ser composto por objetos da classe X. É só isso. (Em uml um tipo - classe, interface - tem relação de composição consigo mesmo. )<br /> <br /> Se o objeto composto é adicionado a si mesmo é uma auto-composição ( um ciclo fechado) Se o objeto não é composto por mais nenhum objeto então ele é diretamente um leaf. Ou seja, o leaf advém da propria regra e não é necessário presupor a sua existencia à partida.<br /> <br /> Se o objeto leaf é especializado isso não é mais um problema do padrão Composite. Isso é a implementação de outro padrão: Strategy. Normalmente isso é legal ( Swign por exemplo) mas não é uma condição sin qua non para ter composite.<br /> <br /> Ou seja, o ponto, é que não é tão complexo assim derivar as coisas, mas a principio isso não é feito no dia-a-dia, dai a necessidade de catálogos.  Tlv os catálogos não enfatizem o suficiente a relação que os padrões têm com as regras de OO. Isso é uma pena, porque leva muita gente a achar que padrões são coisas apenas empíricas. <br /> <br /> É que achando que são apenas empíricas sentem-se no direito das dobrar à sua situação, descaracterizando os principios de OO e portanto o padrão. <br /> <br /> O exemplo classico: o cara cria um objeto com variável static private e um método para retorna essa instancia. Ai ele diz que isso é a implementação de singleton. Esse é o problema. Não é a implementação de singleton pela simples razão que não cumpre as regras do padrão em particular : um único objeto da classe deve existir a qualquer momento. <br /> ( se o construtor é publico, por exemplo, outros objetos podem ser criados.)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/536825/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/536825/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Mon, 11 Aug 2008 12:52:59]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Ressucitando um tópico do passado ...<br /> <br /> Lendo algumas referências, inclusive muitas apresentadas aqui, consigo entender o que é o DTO e quando usar.<br /> <br /> Agora a minha dúvida é bem pontual. <br /> <br /> Suponha que eu tenha um método de acesso ao banco que me retorna um result set, eu preciso que este método retorne para o cliente - a camada que vai usá-lo, seja view ou business sei lá - uma lista formatada que seja de fácil iteração.<br /> <br /> O que eu quero dizer com isso? Quando eu faço<br /> <br /> [code]List list = new ArrayList();<br /> while (rs.next()) {<br />   Pessoa p = new Pessoa();<br />   p.setNome(rs.getString("nome"));<br />   p.setIdade(rs.getInt("idade"));<br /> <br />   list.add(p);<br /> }[/code]<br /> <br /> Fica fácil no meu cliente saber iterar na lista e fazer o que for preciso.<br /> <br /> Mas isso seria ruim? Pois a classe Pessoa muito provavelmente só teria sentido em ter os seus atributos e os seus gets e sets.<br /> <br /> Uma sugestão - primeira página do tópico - seria passar o que o programmer chamou de um array de structs tipados.<br /> <br /> Eu já tinha visto esta alternativa antes, mas isso pode ser ruim pois eu toda classe que precisasse eu teria que ter uma estrutura dessas.<br /> <br /> Uma outra alternativa seria você criar um hashmap e depois um iterator pra facilitar as coisas. Mas será que o esforço vale a pena?<br /> <br /> Achei um link interessante que trata da mesma situação<br /> <br /> http://consultingblogs.emc.com/jaddy/archive/2009/10/01/how-not-to-use-dtos-in-domain-driven-architectures.aspx<br /> <br /> Na sessão [i]Our solution[/i] ele diz<br /> <br /> [quote]From coding perspective, we used beanutils and a bit of reflection to achieve cloning of objects. [/quote]<br /> <br /> Seria essa uma boa idéia? Não seria um tiro de canhão para matar uma mosca??  :roll: <br /> <br /> O que vocês costumam fazer? Ou usam o [i]VO[/i] Pessoa mesmo?? ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788088/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788088/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 1 Dec 2009 20:40:52]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=cv]O grande ponto a se grifar eh o "se voce tem uma aplicacao [b]distribuida[/b]...": DTOs sao um design pattern, Local-DTOs sao um anti-pattern. <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">[/quote]<br /> <br /> a minha duvida tem a ver com a frase acima tb, no caso que eu coloquei não tenho uma aplicação distribuida ...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788093/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788093/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 1 Dec 2009 21:01:48]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=André Fonseca]a minha duvida tem a ver com a frase acima tb, no caso que eu coloquei não tenho uma aplicação distribuida ...[/quote]<br /> <br /> Como que é sua aplicação?<br /> <br /> É client x server?<br /> <br /> <br /> flws<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788202/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788202/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 08:11:14]]> GMT</pubDate>
				<author><![CDATA[ fantomas]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ sim, entretanto as camadas que eu mencionei rodam no mesmo ambiente. eu posso até estar fazendo acesso a um banco de dados remoto, mas não há necessiade de trafegar estes objetos pela rede...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788215/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788215/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 08:34:58]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=André Fonseca]Ressucitando um tópico do passado ...<br /> <br /> Lendo algumas referências, inclusive muitas apresentadas aqui, consigo entender o que é o DTO e quando usar.<br /> <br /> Agora a minha dúvida é bem pontual. <br /> <br /> Suponha que eu tenha um método de acesso ao banco que me retorna um result set, eu preciso que este método retorne para o cliente - a camada que vai usá-lo, seja view ou business sei lá - uma lista formatada que seja de fácil iteração.<br /> <br /> O que eu quero dizer com isso? Quando eu faço<br /> <br /> [code]List list = new ArrayList();<br /> while (rs.next()) {<br />   Pessoa p = new Pessoa();<br />   p.setNome(rs.getString("nome"));<br />   p.setIdade(rs.getInt("idade"));<br /> <br />   list.add(p);<br /> }[/code]<br /> <br /> Fica fácil no meu cliente saber iterar na lista e fazer o que for preciso.<br /> <br /> Mas isso seria ruim? Pois a classe Pessoa muito provavelmente só teria sentido em ter os seus atributos e os seus gets e sets.<br /> <br /> Uma sugestão - primeira página do tópico - seria passar o que o programmer chamou de um array de structs tipados.<br /> <br /> Eu já tinha visto esta alternativa antes, mas isso pode ser ruim pois eu toda classe que precisasse eu teria que ter uma estrutura dessas.<br /> <br /> Uma outra alternativa seria você criar um hashmap e depois um iterator pra facilitar as coisas. Mas será que o esforço vale a pena?<br /> <br /> Achei um link interessante que trata da mesma situação<br /> <br /> http://consultingblogs.emc.com/jaddy/archive/2009/10/01/how-not-to-use-dtos-in-domain-driven-architectures.aspx<br /> <br /> Na sessão [i]Our solution[/i] ele diz<br /> <br /> [quote]From coding perspective, we used beanutils and a bit of reflection to achieve cloning of objects. [/quote]<br /> <br /> Seria essa uma boa idéia? Não seria um tiro de canhão para matar uma mosca??  :roll: <br /> <br /> O que vocês costumam fazer? Ou usam o [i]VO[/i] Pessoa mesmo?? [/quote]<br /> <br /> Se a sua aplicação é orientada ao dominio obrigatoriamente vc terá uma List&lt;Entidade&gt; e portanto vc é obrigado a criar objetos dessa entidade. <br /> Contudo, vc não é obrigado a criar esses objetos à mão, nem a criá-los junto à leitura do resultSet.<br /> <br /> Para não os criar à mão vc usa reflection. Todos os frameworks fazem isso. Conceptualmente isso não passa de uma forma de injeção. Vc injeta um monte de outros objetos na classe da entidade.<br /> O fato deles serem dados da entidade é um detalhe. <br /> <br /> Vc não precisa criar o list e populá-lo com a leitura do resultset; Vc pode usar o padrão Fastlane Reader. Este padrão poupa objetos na memoria e apenas traduz o rs para o objeto quando necessário. <br /> Nestes casos o uso de List ou outro tipo de collection não é aconcelhável a menos que vc tenha codigo legado escrito dessa forma.<br /> <br /> Você pode abstrair esse codigo até ter algo que funciona para qualquer classe. Basicamente vc estará fazendo o que o Hibernate faz. Mas para isso dar certo vc precisa de algum tipo de metadados.<br /> Sem metadados o unico jeito e´fazer na mão. Reflection oferece muitos metadados, mas podem ñ ser suficientes. Por exemplo, não contém nome de tabelas e colunas... <br /> <br /> <br /> Este tipo de trabalho não se caracteriza como o uso de DTO. O uso de DTO implica duas coisas :  orientação a dados (data) e distribuição (transfer). Usar entidades descaractetiza o uso de dados e o fato de estarem na mesma jvm descaracteriza transfer ( todos os DTO são serializable, entidades não precisam ser).<br /> <br /> Cuidado com a confusão entre DTO e VO. Tem muita coisa sobre isso no guj é questão de procurar, mas resumindo : VO não são DTO e DTO não são VO. <br /> <br />   ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788221/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788221/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 08:46:38]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=sergiotaborda]Este tipo de trabalho não se caracteriza como o uso de DTO. O uso de DTO implica duas coisas : orientação a dados (data) e distribuição (transfer). Usar entidades descaractetiza o uso de dados e o fato de estarem na mesma jvm descaracteriza transfer ( todos os DTO são serializable, entidades não precisam ser).<br /> <br /> Cuidado com a confusão entre DTO e VO. Tem muita coisa sobre isso no guj é questão de procurar, mas resumindo : VO não são DTO e DTO não são VO. [/quote]<br /> <br /> Sendo assim (client x server), também concordo com que o Sergio disse.<br /> <br /> flws<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788243/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788243/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 09:14:25]]> GMT</pubDate>
				<author><![CDATA[ fantomas]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Achei interessante (porque reflete a situação do Java) é que a opção mais simples que é do hashmap é considerado um "esforço". <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788308/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788308/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 10:21:42]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=mochuara]Achei interessante (porque reflete a situação do Java) é que a opção mais simples que é do hashmap é considerado um "esforço". <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">[/quote]<br /> <br /> Existe uma derivação do DTO chamada HashDTO que usa um map para a transferencia. O problema é que isso não é fortemente tipado e leva a um monte de outros problemas. ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788406/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788406/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 11:48:36]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=sergiotaborda][quote=mochuara]Achei interessante (porque reflete a situação do Java) é que a opção mais simples que é do hashmap é considerado um "esforço". <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">[/quote]<br /> <br /> Existe uma derivação do DTO chamada HashDTO que usa um map para a transferencia. O problema é que isso não é fortemente tipado e leva a um monte de outros problemas. [/quote]<br /> <br /> Ele é fortemente tipado, é um hashmap. <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> Não é um tipo específico da sua aplicação, e nem vejo motivo para tal, visto que é apenas para trafegar objetos entre modulos distintos. Não ter que manter código de infraestrutura é uma vantagem IMO, principalmente numa linguagem que impõe tanta cerimônia na definição de tipos.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788417/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788417/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 11:54:33]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=mochuara][quote=sergiotaborda][quote=mochuara]Achei interessante (porque reflete a situação do Java) é que a opção mais simples que é do hashmap é considerado um "esforço". <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">[/quote]<br /> <br /> Existe uma derivação do DTO chamada HashDTO que usa um map para a transferencia. O problema é que isso não é fortemente tipado e leva a um monte de outros problemas. [/quote]<br /> <br /> Ele é fortemente tipado, é um hashmap. <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> [/quote]<br /> <br /> imagine a classe pessoa com nome (String) e data de nascimento (Date). Faça um map tipado para isso.  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0"> <br /> <br /> O melhor que vc vai conseguir é Map&lt;String, Object&gt;<br /> <br /> "Object" significa "não sei qual é o tipo".<br /> Existem alternativa que envolvem utilizar metadados que têm que estar presentes dos dois lados.<br /> Funciona, mas dá muito trabalho e como já disse tem problemas.<br /> <br /> [quote]<br /> Não é um tipo específico da sua aplicação, e nem vejo motivo para tal, visto que é apenas para trafegar objetos entre modulos distintos. Não ter que manter código de infraestrutura é uma vantagem IMO, principalmente numa linguagem que impõe tanta cerimônia na definição de tipos.[/quote]<br /> <br /> Na ideia é boa, na prática não é util.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788711/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788711/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 17:03:44]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ oi<br /> <br /> não estou me referindo a este [url=http://c2.com/cgi/wiki?ValueObject]value object[/url] mas sim ao value object criado pela sun e que depois foi renomeado para DTO.<br /> <br /> Vou procurar estudar um pouco sobre o que falou, principalmente sobre esse  Fastlane Reader.<br /> <br /> Sobre as outras sugestões a minha dúvida fica para quando eu não tenho os frameworks ou então o uso dos metadados fica dificil...<br /> <br /> Na verdade nem sei se seria mesmo o VO, mas o que eu queria saber era uma forma de empacotar os dados de uma forma que fosse facil de iterar depois, algo semelhante a  uma struct de dados do C.. A minha dúvida é saber se é ruim usar esta classe pessoa com seus gets e sets só para agrupar o retorno do result set ou se tem uma forma melhor de fazer isso.. <br /> <br /> Tanto em termos de performance como também de manutenção, já que fica difícil quando precisarmos um dia de alterar esta classe ou bean ou sei la se o atributo nome mudar para primeiroNome e ultimoNome..<br /> <br /> Neste caso concordo que usar reflection ou metadados vai facilitar bastante..<br /> <br /> abs]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/788817/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/788817/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Wed, 2 Dec 2009 21:15:58]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=sergiotaborda]<br /> imagine a classe pessoa com nome (String) e data de nascimento (Date). Faça um map tipado para isso.  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0"> <br /> <br /> O melhor que vc vai conseguir é Map&lt;String, Object&gt;<br /> <br /> "Object" significa "não sei qual é o tipo".<br /> Existem alternativa que envolvem utilizar metadados que têm que estar presentes dos dois lados.<br /> Funciona, mas dá muito trabalho e como já disse tem problemas.<br /> <br /> [/quote]<br /> <br /> wow.. Voce consegue transformar ate o problema mais simples (fazer um conjunto de dados aparecer em outro ponto do sistema seja por cópia ou referência) numa questão digna de merecer a "melhor solução" que precisa de novos tipos, abstrações, frameworks, etc. <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"><br /> <br /> Detalhe, o objetivo inicial era claro no sentido de ser a solução mais simples....<br /> <br /> mas voce pode justificar soluções complexas e apontar os perigos decorrente de uma solução mais simples, mas que tipo de bolha vc vive pra achar que isso é um campeonatinho de quem oferece a solução mais sofisticada? No mundo real o BOM programador precisa ser capaz de escolher quais os problemas que realmente valem a pena perder seu tempo. Talvez a empresa que o outro colega ai trabalha seja líder de vendas no mercado de frameworks de transferencia de objetos ou então se trata de um projeto opensource (que é hobby e não da precisa gerar dinheiro pro seu chefe), se não for este o caso...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789062/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789062/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 10:50:24]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=mochuara][quote=sergiotaborda]<br /> imagine a classe pessoa com nome (String) e data de nascimento (Date). Faça um map tipado para isso.  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0"> <br /> <br /> O melhor que vc vai conseguir é Map&lt;String, Object&gt;<br /> <br /> "Object" significa "não sei qual é o tipo".<br /> Existem alternativa que envolvem utilizar metadados que têm que estar presentes dos dois lados.<br /> Funciona, mas dá muito trabalho e como já disse tem problemas.<br /> <br /> [/quote]<br /> <br /> wow.. Voce consegue transformar ate o problema mais simples (fazer um conjunto de dados aparecer em outro ponto do sistema seja por cópia ou referência) numa questão digna de merecer a "melhor solução" que precisa de novos tipos, abstrações, frameworks, etc. <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"><br /> <br /> Detalhe, o objetivo inicial era claro no sentido de ser a solução mais simples....<br /> <br /> mas voce pode justificar soluções complexas e apontar os perigos decorrente de uma solução mais simples, mas que tipo de bolha vc vive pra achar que isso é um campeonatinho de quem oferece a solução mais sofisticada? No mundo real o BOM programador precisa ser capaz de escolher quais os problemas que realmente valem a pena perder seu tempo. Talvez a empresa que o outro colega ai trabalha seja líder de vendas no mercado de frameworks de transferencia de objetos ou então se trata de um projeto opensource (que é hobby e não da precisa gerar dinheiro pro seu chefe), se não for este o caso...[/quote]<br /> <br /> não sei em que dimensão vc vive, mas na minha dimensão HashDTO é um anti-pattern. Não só ele é , como eu já tive as mesmas ideias que vc está colocando e já as implementei  e já vi que tem problemas práticos. Como já disse, funciona, mas tem problemas. <br /> O principal problema é a tipagem fraca. O fato de não usar um bean o impede de interagir facilmente com outro frameworks como o hibernate e outros.  HashDTO parece uma solução simples, mas não é. Estou lhe dizendo isto como um fato porque eu já usei. não se trata de procura a melhor solução, trata-se de - na minha dimensão - eu já ter experimentado essa solução e ter visto com os meus olhos que não é prática. A infra é simples, mas o uso é complexo. <br /> <br /> A unica forma util de usar HashDTO é transformando de bean para map e vice versa usando o HDTO apenas na comunicação. <br /> Mas vai dai isso obriga a ter a classe do bena original dos dois lados e isso significa que não precisa do HahsDTO pode simplesmente usar a classe do bean.<br /> <br /> Na minha dimensão as pessoas têm experiencia com as coisas e as pessoas que não têm essa experiencia agradecem que as pessoas que a têm partilhem as suas conclusões. não só isso, como - na minha dimensão - existe a internet e existe centenas de pessoas contando suas experiencia. Na minha dimensão - que eu chamo de mundo real também - ser um bom programador não significa saber tomar decisões sobre design patterns e o problema dos objetos distribuídos não é simples. ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789130/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789130/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 12:05:20]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=sergiotaborda]<br /> não sei em que dimensão vc vive, mas na minha dimensão HashDTO é um anti-pattern. Não só ele é , como eu já tive as mesmas ideias que vc está colocando e já as implementei  e já vi que tem problemas práticos. Como já disse, funciona, mas tem problemas. <br /> O principal problema é a tipagem fraca. O fato de não usar um bean o impede de interagir facilmente com outro frameworks como o hibernate e outros.  HashDTO parece uma solução simples, mas não é. Estou lhe dizendo isto como um fato porque eu já usei. não se trata de procura a melhor solução, trata-se de - na minha dimensão - eu já ter experimentado essa solução e ter visto com os meus olhos que não é prática. A infra é simples, mas o uso é complexo. <br /> <br /> A unica forma util de usar HashDTO é transformando de bean para map e vice versa usando o HDTO apenas na comunicação. <br /> Mas vai dai isso obriga a ter a classe do bena original dos dois lados e isso significa que não precisa do HahsDTO pode simplesmente usar a classe do bean.<br /> <br /> Na minha dimensão as pessoas têm experiencia com as coisas e as pessoas que não têm essa experiencia agradecem que as pessoas que a têm partilhem as suas conclusões. não só isso, como - na minha dimensão - existe a internet e existe centenas de pessoas contando suas experiencia. Na minha dimensão - que eu chamo de mundo real também - ser um bom programador não significa saber tomar decisões sobre design patterns e o problema dos objetos distribuídos não é simples. [/quote]<br /> <br /> Acontece que -na dimensão do post que ressucitou o tópico- não se trata de sistema distribuido e nem foi mencionado que vai usar hibernate. Ainda assim vc continua sustentando o mesmo argumento?  <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789135/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789135/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 12:13:32]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=mochuara]<br /> Acontece que -na dimensão do post que ressucitou o tópico- não se trata de sistema distribuido e nem foi mencionado que vai usar hibernate. Ainda assim vc continua sustentando o mesmo argumento?  <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> [/quote]<br /> <br /> Sim. Se estamos falando de um sistema local então nem ha porque falar em DTO para começo de conversa. Logo, usar HashDTO seria a exarcebação do erro. <br /> <br /> Você pode estar confundindo com objeto de contexto (Context Object) em que o map funciona perfeitamente. Este tipo de objeto é passado e repassado várias vezes , mas tecnicamente ele não é um DTO. Exemplos classicos são o request, o response e o session da servlet api.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789225/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789225/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 13:47:18]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=sergiotaborda][quote=mochuara]<br /> Acontece que -na dimensão do post que ressucitou o tópico- não se trata de sistema distribuido e nem foi mencionado que vai usar hibernate. Ainda assim vc continua sustentando o mesmo argumento?  <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> [/quote]<br /> <br /> Sim. Se estamos falando de um sistema local então nem ha porque falar em DTO para começo de conversa. Logo, usar HashDTO seria a exarcebação do erro. [/quote]<br /> <br /> Pirou de vez? Quem falou de DTO, hashDTO, HBO... foi vc!!!<br /> <br /> [quote=sergiotaborda]<br /> Você pode estar confundindo com objeto de contexto (Context Object) em que o map funciona perfeitamente. Este tipo de objeto é passado e repassado várias vezes , mas tecnicamente ele não é um DTO. Exemplos classicos são o request, o response e o session da servlet api.[/quote]<br /> <br /> Eu confundi? Bom, pelo menos vc teve um momento de lucidez finalmente, é por ai mesmo. Eu não chamaria de DTO tb, chamaria de.. advinha, um map.<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789326/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789326/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 15:37:50]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=mochuara][quote=sergiotaborda][quote=mochuara]<br /> Acontece que -na dimensão do post que ressucitou o tópico- não se trata de sistema distribuido e nem foi mencionado que vai usar hibernate. Ainda assim vc continua sustentando o mesmo argumento?  <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> [/quote]<br /> <br /> Sim. Se estamos falando de um sistema local então nem ha porque falar em DTO para começo de conversa. Logo, usar HashDTO seria a exarcebação do erro. [/quote]<br /> <br /> Pirou de vez? Quem falou de DTO, hashDTO, HBO... foi vc!!!<br /> [/quote]<br /> <br />  <img src="http://www.guj.com.br/images/smilies/0a4d7238daa496a758252d0a2b1a1384.gif" border="0">  <img src="http://www.guj.com.br/images/smilies/0a4d7238daa496a758252d0a2b1a1384.gif" border="0">  <img src="http://www.guj.com.br/images/smilies/0a4d7238daa496a758252d0a2b1a1384.gif" border="0">  <img src="http://www.guj.com.br/images/smilies/0a4d7238daa496a758252d0a2b1a1384.gif" border="0">  <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> <br /> <br /> Titulo do topico : "[b]DTO [/b]- duvida conceitual"<br /> <br /> Citação do André Fonseca que reiniciou o topico :"Lendo algumas referências, inclusive muitas apresentadas aqui, consigo entender o que é o [b]DTO [/b] e quando usar. "<br /> <br /> Eu falei em DTO porque[u] esse é o tema do topico[/u]!<br /> <br /> EoM<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789384/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789384/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 16:29:18]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=sergiotaborda]<br /> Eu falei em DTO porque[u] esse é o tema do topico[/u]!<br /> [/quote]<br /> <br /> Então vc respondeu pra pessoa errada porque eu não falei de DTO, mas sim de usar um map.<br /> <br /> [quote=sergiotaborda]Se estamos falando de um sistema local então nem ha porque falar em DTO para começo de conversa. Logo, usar HashDTO seria a exarcebação do erro.<br /> <br /> [b]Você[/b] pode estar confundindo com blablabla...[/quote]<br /> <br /> A semântica de um map é completamente diferente de um DTO, porque não reconhece que esta viajando na maionese desde o início porque o sistema é local e vc continua falando em DTO, hashDTO (seja la que porra é essa). ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789416/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789416/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Thu, 3 Dec 2009 17:10:27]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ oi<br /> <br /> acho que talvez o motivo da confusão foi a forma de eu expressar a minha dúvida<br /> <br /> o que eu queria saber é qual a melhor forma de se criar uma lista com o retorno de um result set de tal forma que seja fácil iterar nesta lista no meu cliente - camada que vai usar esta lista<br /> <br /> o que se costuma fazer é criar um objeto burro com apenas estado e criar uma lista com estes objetos<br /> <br /> talvez este saco de atributos tenha mesmo mais a ver com o outro VO que mencionei acima do que o DTO que é o antigo VO renomeado pela SUN, e que na verdade surgiu para resolver o problema de trafegar objetos em rede em sistemas distribuidos..<br /> <br /> a minha dúvida teria mais a ver com: isso é considerado uma quebra do paradigma OO? isso é uma má pratica? afeta performance? teria uma forma mais customizavel de se fazer isso? ( para o caso dos atributos desses sacos de atributos mudarem??)<br /> <br /> resumindo, acho que confundi mesmo o  atual VO com o DTO...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789654/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789654/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 4 Dec 2009 09:41:39]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=André Fonseca]oi<br /> <br /> acho que talvez o motivo da confusão foi a forma de eu expressar a minha dúvida<br /> <br /> o que eu queria saber é qual a melhor forma de se criar uma lista com o retorno de um result set de tal forma que seja fácil iterar nesta lista no meu cliente - camada que vai usar esta lista<br /> <br /> o que se costuma fazer é criar um objeto burro com apenas estado e criar uma lista com estes objetos<br /> <br /> (..)<br /> a minha dúvida teria mais a ver com: isso é considerado uma quebra do paradigma OO? isso é uma má pratica? afeta performance? teria uma forma mais customizavel de se fazer isso? ( para o caso dos atributos desses sacos de atributos mudarem??)<br /> <br /> [/quote]<br /> <br /> Vamos esclarecer a nomenclatura. Se você tem um sistema orientado a dados vc traduz linhas de banco em [url=http://www.javabuilding.com/pattern/property-bag.html]PropertyBags[/url]. Estes objetos são burros. (Veja que o proprio ResultSet é um ProeprtyBag neste sentido)<br /> Se vc traduz cada linha num sistema orientado a entidades vc traduz para uma instância de uma entidade. Estas classes têm logicas além de get/set. por exemplo, logicas de estado num método "isActive()" que é true se o campo XTPO não é nulo, por exemplo.<br /> <br /> Vc tem PropertyBags ou entidades ?<br /> A entidades podem ser cross-layer. Podem. Não têm que ser. <br /> <br /> Agora vc precisa passar uma coleção desses objetos para outra camada.<br /> <br /> Nessa outra camada o objeto tem as mesmas propriedades ?<br /> <br /> Na camada de apresentação é comum necessitar de mais dados do que aqueles que estão na entidade/bag original para controle da propria apresentação. Neste caso é licito implementar objetos especiais da camada. O Core JEE chama a isto ViewHelpers, mas seria mais como entidades da camada de apresentação. quando a entidade do dominio é cross-layer ela é usada tb como entidade da camada de apresentação. É comum carregar um list passar o jsp e usar um c:forEach para iterar e usar os proprios campos para ler e escrever os valores.  Mas as vezes não funciona. <br /> <br /> no struts 1 por exemplo, as actionforms são objetos populados da tela e para a tela. Vc tem que traduzir suas entidades de dominio para esses objetos. Esses objetos são "view entitys".<br /> <br /> Se vc usa PropertyBag no sistema , mais uma ou menos uma propriedade não muda nada, mas se usa entidades é bem provável que precise convertê-las para PropertyBag em algum ponto ( trasnferencia para outro nodo, persistencia, exportação/inportação , webservices e display, são as mais comuns). Sobretudo se esse ponto é na fronteira do sistema.<br /> <br /> Não ha nenhuma quebra de OO se as responsabilidades forem bem entendidas e separadas. Na realidade vc usa isso todos os dias, vc só não presta atenção <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> ( O Hibernate transforma as entidades num objeto intermédio que é como um array de colunas com valores. Vc não vê, mas ele está usando essa mesma logica que vc está falando.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/789830/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/789830/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Fri, 4 Dec 2009 12:07:18]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ Sérgio,<br /> <br /> Entendi do que foi dito que na verdade o meu sistema precisa de uma lista de Property Bags e não Entidades.<br /> <br /> Agora, quanto ao fato desses objetos mudarem com o tempo? Qual seria uma forma que facilitaria a customização?<br /> <br /> Por exemplo,<br /> <br /> O meu objeto Pessoa mudou sua propriedade de <br /> <br /> [code]String nome;[/code]<br /> <br /> para<br /> <br /> [code]String primeiroNome;<br /> String sobreNome;<br /> [/code]<br /> <br /> Como refletir estas mudanças em todas as camadas que utilizam listas deste objeto? Seria introspecção uma boa forma? (java beans) Você teria um exemplo de como fazer isso com um Map que fosse de fácil alteração depois?? (Supondo que eu não tenha propriedades tipadas)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/790585/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/790585/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Mon, 7 Dec 2009 08:55:31]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=André Fonseca]Sérgio,<br /> <br /> Entendi do que foi dito que na verdade o meu sistema precisa de uma lista de Property Bags e não Entidades.<br /> <br /> Agora, quanto ao fato desses objetos mudarem com o tempo? Qual seria uma forma que facilitaria a customização?<br /> <br /> Por exemplo,<br /> <br /> O meu objeto Pessoa mudou sua propriedade de <br /> <br /> [code]String nome;[/code]<br /> <br /> para<br /> <br /> [code]String primeiroNome;<br /> String sobreNome;<br /> [/code]<br /> <br /> Como refletir estas mudanças em todas as camadas que utilizam listas deste objeto? Seria introspecção uma boa forma? (java beans) Você teria um exemplo de como fazer isso com um Map que fosse de fácil alteração depois?? (Supondo que eu não tenha propriedades tipadas)[/quote]<br /> <br /> com map não dá para usar como vc quer. As keys dos maps não são interpretadas por nenhuma IDE como propriedades. Logo, vc teria que fazer esse refactoring na mão e ai vc se estrepa.<br /> Ai vc usa beans com seus set/get e reflection. Existem bibliotecas que ajudam a fazer isso se vc não quiser fazer na mão.<br /> <br /> Com isso vc ganha não só tipagem forte para cada campo mas tb facilidade de refactoring que é muito mais importante ainda.<br /> <br /> Usar map para isso não é uma boa(esse era o ponto em relação ao HashDTO), vc vai se arrepender logo na primeira vez que precisar trocar o nome de algum campo.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/790831/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/790831/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Mon, 7 Dec 2009 13:06:42]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=André Fonseca]<br /> Agora, quanto ao fato desses objetos mudarem com o tempo? Qual seria uma forma que facilitaria a customização?<br /> <br /> Por exemplo,<br /> <br /> O meu objeto Pessoa mudou sua propriedade de <br /> <br /> [code]String nome;[/code]<br /> <br /> para<br /> <br /> [code]String primeiroNome;<br /> String sobreNome;<br /> [/code]<br /> <br /> Como refletir estas mudanças em todas as camadas que utilizam listas deste objeto? Seria introspecção uma boa forma? (java beans) Você teria um exemplo de como fazer isso com um Map que fosse de fácil alteração depois?? (Supondo que eu não tenha propriedades tipadas)[/quote]<br /> <br /> Assumindo que vc preferiu estender um map ao invés de criar um wrapper, ficaria assim:<br /> <br /> pessoa.remove("nome");<br /> pessoa.put("primeiroNome", "André");<br /> pessoa.put("sobreNome", "Fonseca");<br /> <br /> Caso não queira fazer na mão pode passar o "trabalho" para um estagiário. Tudo que ele precisa fazer é ler o javadoc do hashmap.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/791236/redto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/791236/redto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 8 Dec 2009 09:33:56]]> GMT</pubDate>
				<author><![CDATA[ mochuara]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ algo q sempre tive duvida é: qual a diferença entre um DTO, TO e VO? pra mim são as mesmas coisa...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/791241/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/791241/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 8 Dec 2009 09:40:20]]> GMT</pubDate>
				<author><![CDATA[ luistiagos]]></author>
			</item>
			<item>
				<title>DTO  - dúvida conceitual</title>
				<description><![CDATA[ [quote=luistiagos]algo q sempre tive duvida é: qual a diferença entre um DTO, TO e VO? pra mim são as mesmas coisa...[/quote]<br /> <br /> Isso é uma pergunta ou uma afirmação ?<br /> Se for uma pergunta a resposta é: a diferença é historica. <br /> <br /> Historicamente os nomes Value Object e Transfer Object  significavam a mesma coisa. è um objeto "burro" serializável que permite passar dados entre nodos. Eram padrões do J2EE Core patterns<br /> <br /> Ai veio o Martin Fowler e utilizou o nome Value Object para se referir a um outro tipo de padrão. Então o nome Value Object e VO passaram a significar isso, e ele criou o nome  DTO para significar o que TO significava. <br /> <br /> A segunda edição do core jee patterns aboliu o uso de VO no sentido antigo e deixo o nome [url=http://java.sun.com/blueprints/patterns/TransferObject.html] Transfer Object[/url] (que é mais genérico que Data Transfer Object) para signifca o objeto burro serializável.<br /> <br /> Ai para evitar confusão o temo DTO foi abandonado (embora significa o mesmo que TO) e apenas os termos Value Object - significando o padrão do Fowler e TO significando o padrão do core j2ee paterns ficaram.<br /> <br /> Hoje em dia se vc se referir ao objeto burro serializável como "VO" vc estará indicando que não está atualizado e tudo o que deriva dai. <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/23552/791352/dto----duvida-conceitual
</guid>
				<link>http://www.guj.com.br/prepost/23552/791352/dto----duvida-conceitual
</link>
				<pubDate><![CDATA[Tue, 8 Dec 2009 11:21:52]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
	</channel>
</rss>
