<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do Alone &#187; Frameworks</title>
	<atom:link href="http://www.nelsonalone.com.br/category/frameworks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nelsonalone.com.br</link>
	<description>A tecnologia de forma simplificada</description>
	<lastBuildDate>Fri, 30 Apr 2010 01:18:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ajax com RichFaces</title>
		<link>http://www.nelsonalone.com.br/2010/01/26/ajax-com-richfaces/</link>
		<comments>http://www.nelsonalone.com.br/2010/01/26/ajax-com-richfaces/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 08:42:37 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=417</guid>
		<description><![CDATA[Desenvolver aplicações para Web que requer bom desempenho, clareza no conteúdo e flexibilidade não é tarefa fácil até para os desenvolvedores experientes. O principal item que deve ser levado em conta é o bom desempenho pelo fato de influenciar na maioria dos valores que podem ser agregados em um produto voltado para Web. Nesse ponto, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Desenvolver aplicações para Web que requer bom desempenho, clareza no conteúdo e flexibilidade não é tarefa fácil até para os desenvolvedores experientes. O principal item que deve ser levado em conta é o bom desempenho pelo fato de influenciar na maioria dos valores que podem ser agregados em um produto voltado para Web. Nesse ponto, existem diversas dicas que podem ser seguidas através da iniciativa da Google, o <a href="http://code.google.com/intl/pt-BR/speed/articles/">Let’s make the web faster</a> , que apresenta uma série de dicas para compactar o conteúdo ao máximo para tornar a transferência da páginas mais rápida.</p>
<p style="text-align: justify;">Existem recursos que viabilizam o desempenho em aplicações Web de forma aceitável para o usuário final. Entre elas, na minha opinião, o mais adequado é o Ajax. Existem outras alternativas como o Flex, porém, dependendo da aplicação desenvolvido pode haver demora no carregamento e processamento das requisições, mesmo sendo carregada uma única vez. Com base nisso, a utilização do Flex sobre uma intranet é uma excelente opção. Como o contexto é a internet, soluções Ajax levam vantagem pelo fato do conteúdo ser apresentado em HTML/XHTML e pelo fato de não utilizar nenhum plugin para os navegadores. Porém, quando se trata de JavaScript, muitos desenvolvedores tentam evitar por ser mais uma linguagem necessária para o aprendizado para desenvolver uma aplicação. Ironicamente, um desenvolvedor web necessita saber no mínimo três linguagens para desenvolver uma aplicação utilizável.</p>
<p style="text-align: justify;">Em alguns casos, a utilização do javascript em alguns projetos torna-se complicada devido a dificuldade, principalmente quando projetos são feitos utilizado AJAX. Isso encorajou a criação de inúmeros frameworks e componentes que tentam tornar o desenvolvimento de aplicações que utilizam AJAX mais simples e fáceis de manter.</p>
<p style="text-align: justify;">JQuery é um framework que tenta facilitar ao máximo a utilização de JavaScript nas páginas, sendo que, é a ferramenta mais utilizada quando se trata de recursos para a linguagem. O que chama mais atenção são os efeitos e a facilidade para desenvolver com essa ferramenta.</p>
<p style="text-align: justify;">A comunidade Java é privilegiada com inúmeros frameworks e APIs que facilitam o desenvolvimento resolvendo problemas de vários segmentos, principalmente WEB. Acredito que, devido a dificuldade de desenvolver aplicações WEB apenas com JSP, Servlets, Filters, TagLibs, etc., os desenvolvedores tentaram diminuir essa dificuldade com frameworks, tai então a explicação da grande quantidade de frameworks WEB para Java.</p>
<p style="text-align: justify;">Em Java, atualmente, o frameworks WEB mais utilizado, depois do Struts (legado) , é o JSF. Talvez devido ao fato de ser um produto da Sun e estar coberto por uma especificação. Não cheguei a ver detalhes da especificação 2.0, mas nas versões anteriores o desenvolvimento ainda é maçante e chato, onde existem situações que necessitam cada vez da habilidade do desenvolvedor. Porém, muito foi feito para tentar corrigir os problemas e ao mesmo tempo agregar valor ao framework com as extensões repletas de componentes para ser utilizados nos projetos, uma dessas extensões é o <a href="http://www.jboss.org/richfaces">RichFaces</a>. Atualmente encontra-se na versão 3.3 e vem uma série de componentes que podem funcionar sobre uma camada AJAX. A facilidade é tanta que a forma de desenvolver é a quase a mesma que desenvolver com JSF puro. Com isso, está a disposição do desenvolvedor recursos de Drag’nDrop, calendários bem elaborados, efeitos, e uma série de componentes bem desenvolvidos que funcionam sobre AJAX.  A configuração do RichFaces também é simples, basta adicionar alguns filtros, escolher o template, ou desenvolver um, configurar um ou dois XMLs e adicionar algumas taglibs no projeto e pronto, seu projeto já está configurado.</p>
<p style="text-align: justify;">O objetivo desse artigo não é de escrever um tutorial e nem comparar as ferramentas, é de alertar sobre a má utilização dos recursos AJAX na aplicação com o RichFaces. O framework utiliza JQuery para fazer os efeitos e manipular do DOM HTML/XHTML, com isso, o conteúdo do framework vai junto com o projeto. A infra-instrutora de um projeto AJAX é repleta de JavaScript e quando projetos se tornam  complexos, conseqüentemente, a complexidades de manter os script se eleva. Com isso, existe uma estrutura de arquivos javascript pronta para suportar a arvore JSF gerada a cada requisição tornando a estrutura pesada ao ponto de ser desvantagem desenvolver a aplicação baseada em requests sobre toda a página.</p>
<p style="text-align: justify;">Destrinchando o conteúdo carregado pelo browser, existe um tipo de arquivo que representa a chamada de sua URL que é respondida a cada requisição, é configurada no web.xml na definição da chamada para a execução do servlet. Nesses arquivos contem o emaranhado do Javascript que o servidor envia a cada requisição. No meu caso, esses arquivos ficaram em torno de 933Kb, é um tamanho considerável quando se trata de requisições. Isso pode deixar sua aplicação uma carroça quando sua aplicação for pro ar.</p>
<p style="text-align: justify;">Nessa situação, a solução para esse problema é aplicar ao máximo os recursos AJAX na aplicação, fazendo com que apenas um trecho da página possa ser renderizada e não todo a cada requisição. Isso diminui bastante o tráfego na rede tornando a aplicação um pouco mais leve. Nas primeiras solicitações a aplicação fica muito lenta, mas quando o conteúdo está no cache o desempenho fica razoável.</p>
<p style="text-align: justify;">Para comprovar, fiz um teste desenvolvendo uma página simples com um CSS pequeno e sem nenhum arquivo JavaScript amais. Fiz as configurações dos pacotes JSF e do RichFaces descritas em seus devidos manuais respectivamente. Fiz com que a primeira página utilizasse um apenas um <em>&lt;a4j:region &gt; </em>contendo alguns componentes, como; <em>&lt;a4j:form&gt; </em>e  um &lt;a4j:commandLink&gt;. Isso é suficiente para habilitar o suporte AJAX do framework, ou seja, carregando todos os JavaScript responsáveis por essa funcionalidade.</p>
<p style="text-align: justify;">Na documentação do framework não existem tópicos que auxiliem a diminuir o tamanho do conteúdo, isso encoraja a utilização massiva dos recursos em todas as páginas e evitando request desnecessários. Não quero dizer que o framework seja ruim, pelo contrário, é uma ótima ferramenta, porém, deve ser utilizada com cuidado. A utilização de AJAX puro é uma excelente opção.</p>
<p style="text-align: justify;">[]s.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2010/01/26/ajax-com-richfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate: Schema export através de tasks do ANT</title>
		<link>http://www.nelsonalone.com.br/2009/08/27/hibernate-schema-export-atraves-de-tasks-do-ant/</link>
		<comments>http://www.nelsonalone.com.br/2009/08/27/hibernate-schema-export-atraves-de-tasks-do-ant/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 04:33:19 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Persistência]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=336</guid>
		<description><![CDATA[É inegável que o hibernate é um excelente framework de mapeamento objeto relacional. Seus recursos de mapeamento, persistência, transação simplificadas, suporte a queries SQL, HQL, criteria, entre outros, justificam a sua utilização em massa pela comunidade Java. Não foi por acaso sua utilização como modelo para a especificação JPA. Alem das funcionalidades do contexto de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">É inegável que o hibernate é um excelente framework de mapeamento objeto relacional. Seus recursos de mapeamento, persistência, transação simplificadas, suporte a queries SQL, HQL, criteria, entre outros, justificam a sua utilização em massa pela comunidade Java. Não foi por acaso sua utilização como modelo para a especificação JPA.</p>
<p style="text-align: justify;">Alem das funcionalidades do contexto de persistência também podemos contar com as funcionalidades extras que foram desenvolvidas pelo time de desenvolvimento, hoje pertencente a JBoss. Estou falando do pacote hibernate-tools.jar, contido no plugin feito para o eclipse, com o intuito de auxiliar no processo de configuração, mapeamento, importação de schemas e mecanismo de interpretação e execução de HQL. O link para download do plugin encontra-se <a href="http://downloads.sourceforge.net/jboss/HibernateTools-3.2.4.GA-R200905070146-H18.zip">aqui</a>.</p>
<p style="text-align: justify;">Tive a necessidade de fazer com que todo o schema fosse exportado para o banco de dados ao executar uma simples task do Ant. Funcionalidade que facilitaria muito a vida da equipe ao modificar o mapeamento das entidades do projeto, sendo apenas necessário executar a task para exportar as modificações para o SGBD. Para isso, desenvolvi uma task personalizada para solucionar esse problema. A task funcionava bem, mas chegou um ponto que não nos atendia. Portanto, vi que uma boa alternativa seria utilizar as tasks do hibernate-tools.</p>
<p style="text-align: justify;">O pacote hibernate-tools.jar contem um conjunto de tasks que permitem a execução de procedimentos básicos de persistência através de simples tasks do <a href="http://ant.apache.org/">Ant</a>. As tasks são variadas, portanto é possível utiliza-las para; exportar schemas, gerar os inserts do mapeamento em um arquivo .sql, gerar os hbm.xml (se não tiver utilizando anotações) entre outras coisas. Mais um detalhe: o pacote hibernate-tools.jar é completamente independente do plugin.</p>
<p style="text-align: justify;">A configuração para utilizar as tasks a princípio é simples, porém levei um tempo para acertar, já que meu projeto estava mal configurado e gastei muito tempo para descobrir o problema. Vou levar em conta que o seu projeto está devidamente configurado e fazendo todas as operações básicas (insert, update e delete) no banco de dados.</p>
<p style="text-align: justify;">Para uma simples exportação do schema para o banco de dados, a primeira coisa que você deve fazer é adicionar o pacote hibernate-tools.jar no classpath do projeto. Após isso é necessário incluir uma referencia a classe que representa a task. Nesse caso, assim como está abaixo:</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong><code>&lt;taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="path.lib" /&gt;</code></strong></p>
<p style="text-align: justify;"><strong><br />
</strong></p>
<p style="text-align: justify;">Após isso, é necessário incluir um target que fará todo o trabalho sujo. Nessa target deve conter, dentro do <code>&lt;hibernatetool&gt;</code>, no mínimo as tasks <code>&lt;annotationconfiguration/&gt;</code> e <code>&lt;hbm2ddl/&gt;</code> para fazer o processo de configuração e a exportação de todas as configurações de mapeamento incluídas nas classes. Vamos ver o detalhe abaixo:</p>
<p style="text-align: justify;"><code><br />
<strong> &lt;target name="generate" depends="compile"&gt;<br />
&lt;hibernatetool destdir="${dir.build}/generated"&gt;<br />
&lt;classpath&gt;<br />
&lt;path location="${dir.out.classes}"&gt;&lt;/path&gt;<br />
&lt;/classpath&gt;<br />
&lt;annotationconfiguration propertyfile="${dir.out.classes}/hibernate.properties"  configurationfile="${dir.out.classes}/hibernate.cfg.xml" /&gt;<br />
&lt;hbm2ddl drop="true" create="true" export="true" outputfilename="../schema.sql" delimiter=";" format="true" /&gt;<br />
&lt;hbm2dao /&gt;<br />
&lt;/hibernatetool&gt;<br />
&lt;/target&gt;</strong></code></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Reparem que é necessário ter os .class incluídos no <code>&lt;classpath/&gt;</code> como descrito acima, pois é daí que vem todo o mapeamento dos objetos. A propriedade <code>&lt;annotationconfiguration/&gt;</code> representa as configurações do seu SGBD (hibernate.properties) e das classes persistentes (hibernate.cfg.xml). Claro que o arquivo cfg.xml pode conter as configurações do SGBD mas eu achei melhor separá-los.</p>
<p style="text-align: justify;">A task <code>&lt;hbm2dll/&gt;</code> é o elemento principal do processo de exportação do schema. Nela é possível definir se, ao exportar o schema, irá dropar as tabelas existentes e criar uma nova estrutura e além do mais irá criar um arquivo .sql contendo tudo o que foi feito no banco.</p>
<p style="text-align: justify;">Adicionei a task <code>&lt;hbm2dao/&gt;</code> apenas para mostrar o DAO gerado conforme as entidades geradas. Acredito que isso seja útil para os projetos que não utilizam o suporte aos DAOs do Hibernate do Spring.</p>
<p style="text-align: justify;">Bom pessoal, esse foi um processo que me atendeu perfeitamente nos projetos que desenvolvo, portanto, segue a dica para os leitores. Chega de ficar mexendo nas propriedades <code>hibernate.hbm2ddl.auto create-drop</code> e escrever tarks personalizadas para essa tarefa.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">[]s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/08/27/hibernate-schema-export-atraves-de-tasks-do-ant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Por onde anda o Prevayler ?</title>
		<link>http://www.nelsonalone.com.br/2009/08/01/por-onde-anda-o-prevayler/</link>
		<comments>http://www.nelsonalone.com.br/2009/08/01/por-onde-anda-o-prevayler/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 20:57:13 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Persistência]]></category>
		<category><![CDATA[Prevayler]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=321</guid>
		<description><![CDATA[Lembro-me como fosse hoje quando, fuçando na net, encontrei um texto escrito por Klaus Wuestefeld. O texto iniciava com uma pergunta: Você ainda usa banco de dados? A primeira vista aparentava ser um texto provocativo e por isso decidi da uma lida. Ao ler o texto, o que me chamou mais atenção, foi o fato [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Lembro-me como fosse hoje quando, fuçando na net, encontrei um texto escrito por <a href="http://www.bileblog.org/2004/12/the-real-interview-with-klaus-wuestefeld/">Klaus Wuestefeld</a>. O texto iniciava com uma pergunta: <a href="http://imasters.uol.com.br/noticia/1368/tecnologia/prevayler_-_voce_ainda_usa_banco_de_dados/">Você ainda usa banco de dados?</a> A primeira vista aparentava ser um texto provocativo e por isso decidi da uma lida. Ao ler o texto, o que me chamou mais atenção, foi o fato do framework ser 10.000 vezes mais rápido que bancos de dados relacionais.</p>
<p style="text-align: justify;">Com a curiosidade a tona decidi baixar o JAR, junto com os fontes do projeto, para ver do que se tratava e como era feito essa proeza. Notei que era um framework que fazia um processo de serialização da JVM de forma mais elaborada com logs, transações e integridade dos objetos persistidos. Ou seja, um mecanismo de persistência simples e que atendia a aplicações de pequeno porte. A empolgação foi tanta que até fiz minha monografia da faculdade sobre ele.</p>
<p style="text-align: justify;">Ter disponível um framework que implemente um novo conceito de persistência chamou atenção não só de brasileiros, tanto que muitos desenvolvedores se juntaram no desenvolvimento do <em>frameworks, </em>plugins para Eclipse e uma implementação do SQL para consultar objetos &#8220;prevalecidos&#8221;. Ma o que aconteceu? Porque não vingou? Bom, a resposta dessas perguntas eu não tenho. As suposições são muitas. Uma delas seria a aceitação e a barreira da mudança de paradigmas. Muitos até tiveram boa intenção de utilizar em suas aplicações. Um exemplo disso é o <a href="http://thinfeeder.sourceforge.net/">ThinFeeder</a> e portal <a href="http://www.javafree.org/">JavaFree</a>. Lembro que o JavaFree teve uma série de problemas de concorrência ao disponibilizar o portal com a camada de persistência com <a href="http://www.prevayler.org/">prevayler</a>.</p>
<p style="text-align: justify;">Deixei de acompanhar a evolução do framework já faz um tempo, acredito que tenham resolvido os velhos problemas de concorrência, portanto não tenho em detalhes das melhorias e de novas funcionalidades do framework. Porém, acredito que seria uma boa oportunidade de investir na evolução desse framework polêmico. Quem tiver curiosidade o site do projeto está <a href="http://www.prevayler.org/">aqui</a>.</p>
<p style="text-align: justify;">O projeto encontra-se maduro, porém, a quebra de paradigmas ainda é uma barreira para a adoção do framework em suas aplicações. Tentar aceitar que um framework de persistência de objetos possa dar conta de suas aplicações tendo uma série de SGDBs disponíveis realmente é uma coisa difícil.</p>
<p style="text-align: justify;">[]s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/08/01/por-onde-anda-o-prevayler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache Wicket. Mais que uma promessa.</title>
		<link>http://www.nelsonalone.com.br/2009/01/11/apache-wicket-mais-que-uma-promessa/</link>
		<comments>http://www.nelsonalone.com.br/2009/01/11/apache-wicket-mais-que-uma-promessa/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 23:39:32 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=156</guid>
		<description><![CDATA[Olá pessoal, Em primeiro lugar um feliz ano novo a todos vocês que visitam esse blog. Depois de alguns dias sem colocar nada aqui venho disponibilizar algumas informações sobre um framewok que ta tirando o meu sono, não por ser difícil e chato, mas por me fazereu ver o desenvolvimento web, com Java, uma forma [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><!--[endif]--></p>
<p class="MsoNormal" style="text-align: justify;">Olá pessoal,</p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;">Em primeiro lugar um feliz ano novo a todos vocês que visitam esse blog. Depois de alguns dias sem colocar nada aqui venho disponibilizar algumas informações sobre um framewok que ta tirando o meu sono, não por ser difícil e chato, mas por me fazereu ver o desenvolvimento web, com Java, uma forma diferente de desenvolver. Li a JavaMagazine 58 e depois de alguns meses resolvi baixar o <a href="http://wicket.apache.org/">dito cujo</a> pra dar uma olhada.</p>
<p class="MsoNormal" style="text-align: justify;"><a href="http://wicket.apache.org/"><img class="aligncenter size-full wp-image-157" title="wicket-logo" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/01/wicket-logo.png" alt="wicket-logo" width="160" height="59" /></a></p>
<p class="MsoNormal" style="text-align: justify;">Realmente, pra mim foi um pouco esquisito. Acostumado com o desenvolvimento tradicional (Request, Response, Sessions e Forward) vi nesse framework uma maneira mais intuitiva de desenvolver aplicações WEB. Seu modelo de manipulação de conteúdo dinâmico é baseado em markups em arquivos HTML, ou seja, todos os arquivos HTMLs devem estar na mesma estrutura de pacotes na qual se encontra suas WebPages, coisa de louco. Para mim isso foi coisa de outro mundo, mas depois que você começa a escrever os exemplos e ter maior afinidade com o mesmo, só então é possível se acostumar.</p>
<p class="MsoNormal" style="text-align: justify;">Em paralelo com isso, também estou estudando RoR. Talvez esteja aí o segredo para uma aceitação com pouco trauma as mudanças de paradigmas.</p>
<p class="MsoNormal" style="text-align: justify;">Ainda não utilizei o <a href="http://wicket.apache.org/">Wicket</a> em algum projeto, porém vontade não falta. Portanto pessoal, fica ai a dica de um framework poderoso e inovador. Os desenvolvedores do Wicket realmente fizeram um excelente trabalho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/01/11/apache-wicket-mais-que-uma-promessa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grid Gain, o pequeno notável</title>
		<link>http://www.nelsonalone.com.br/2008/10/28/grid-gain-o-pequeno-notavel/</link>
		<comments>http://www.nelsonalone.com.br/2008/10/28/grid-gain-o-pequeno-notavel/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 17:17:42 +0000</pubDate>
		<dc:creator>Nelson</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Grid Computing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[grid computing]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=59</guid>
		<description><![CDATA[Desenvolver softwares para grades computacionais, além de ser uma tarefa árdua é extremamente complexa, principalmente pela necessidade de manter a escalabilidade dos peers(participantes) estáveis sobre a arquitetura de grid. É necessário se preocupar com detalhes referentes a comunicações, protocolos, paralelismo, tolerância a falhas, entre outras dificuldades que a plataforma apresenta. Pelo fato da plataforma ser [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>PT-BR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val=" " /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> Desenvolver softwares para grades computacionais, além de ser uma tarefa árdua é extremamente complexa, principalmente pela necessidade de manter a escalabilidade dos peers(participantes) estáveis sobre a arquitetura de grid. É necessário se preocupar com detalhes referentes a comunicações, protocolos, paralelismo, tolerância a falhas, entre outras dificuldades que a plataforma apresenta.</p>
<p class="MsoNormal">Pelo fato da plataforma ser complexa, foram criados inúmeros frameworks com o objetivo de minimizar os detalhes. Entre os mais populares e robustos está o Globus <a title="Globus Toolkit Home Page" href="http://www.globus.org/toolkit" target="_blank">ToolKit </a> , recomendado pela <a title="Globus Aliance" href="http://www.globus.org" target="_blank">Globus Aliance</a> . O Globus ToolKit é um conjunto de ferramentas que tenta cobrir todas as necessidades relacionadas a Grid Computing. Porém, é complexa e ao mesmo tempo pesada.</p>
<p class="MsoNormal">Uma alternativa para aplicações de pequeno e médio porte é o <a title="Grid Gain" href="www.gridgain.com" target="_self">Grid Gain</a>. Framework escrito em Java, mantido por <a title="Nikita Ivanov" href="http://www.jroller.com/nivanov" target="_blank">Nikita Ivanov</a>, que demonstra ser muito eficiente e simples de utilizar, já que não necessita de muitas das funcionalidades contidas no Globus Toolkit.</p>
<p class="MsoNormal">Agora, se você for construir uma aplicação que roda na infraestrutura do <a title="LHC in Grid Computing" href="http://press.web.cern.ch/Press/PressReleases/Releases2003/PR13.03ELCG-1.html" target="_self">LHC</a>, <a title="SETI homepage" href="http://setiathome.berkeley.edu/" target="_blank">SETI@HOME</a> ou similares, aconselho você usar o Globus ou implementar um do zero.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2008/10/28/grid-gain-o-pequeno-notavel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hibernate &#8211; Dicas para desenvolvedores</title>
		<link>http://www.nelsonalone.com.br/2008/10/20/hibernate-dicas-para-desenvolvedores/</link>
		<comments>http://www.nelsonalone.com.br/2008/10/20/hibernate-dicas-para-desenvolvedores/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 19:29:43 +0000</pubDate>
		<dc:creator>Nelson</dc:creator>
				<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=16</guid>
		<description><![CDATA[Muitos desenvolvedores que utilizam Hibernate como camada de persistência já se depararam com problemas de Lazy Load, principalmente em aplicações WEB. Isso acontece quando esquecemos de ler a documentação do produto referente a utilização nesse ambiente. O resultado disso são sucessíveis erros referente a sessões duplicadas na aplicação. Deixamos isso de lado, pois esse problema [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">Muitos desenvolvedores que utilizam Hibernate como camada de persistência já se depararam com problemas de Lazy Load, principalmente em aplicações WEB. Isso acontece quando esquecemos de ler a <a title="Hiberante Documentação" href="http://www.hibernate.org/5.html" target="_blank">documentação</a> do produto referente a utilização nesse ambiente. O resultado disso são sucessíveis erros referente a sessões duplicadas na aplicação.</p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">Deixamos isso de lado, pois esse problema será discutido em outro post. Vamos nos concentrar no que é esse tal de Lazy Load.</p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p style="text-align: justify;">
<ul style="text-align: justify;">
<li><strong>Lazy Load<br />
</strong></li>
</ul>
<p style="text-align: justify;">Lazy Load(Carga Preguiçosa) nada mais é um padrão de projetos utilizado na maioria dos frameworks de persistência, com implementações específicas para cada arquitetura. A justificativa da sua utilização é de minimizar a carga dos objetos que possuem relacionamento com o objeto solicitado, carregando a lista de coleções apenas quando acessado.</p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">O hibernate habilita o recurso Lazy Load por padrão para evitar que os objeto relacionados sejam carregados por parão. Porém, em alguns casos a utilização desse recurso deve ser controlada. Principalmente no caso que as tabelas referenciadas pelos objetos persistes estão repletas de informações. Nesse caso, deve ser utilizado um recursos como HQL/SQL, consultas embutidas ou tá mesmo configurações que limitam a carga total das tabelas.</p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">A mágica contida na implementação do padrão está no trabalho com conjunto com outros padrões de projetos aplicando técnicas de desenvolvimento. Padrões de projetos como o proxy que tem a finalidade de prover um wraper que instancia e inicia os objetos solicitados. Técnicas com a instrumentação de código que encapsulam funcionalidades extras nas classes persistentes. Para que isso aconteça, o mapeamento, em conjunto com as configurações, devem ser bem feitas para tornar toda a aplicação funcional.</p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p style="text-align: justify;">
<ul style="text-align: justify;">
<li><strong>Desenvolvimento de 	aplicações WEB com Hibernate</strong></li>
</ul>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">Desenvolver aplicações WEB que utilizam hibernate é uma tarefa desafiadora para desenvolvedores de primeira viagem, principalmente quando o projeto tem diversos relacionamentos e requer constante acesso a bases de dados. Participei de alguns projetos que esses problemas vieram a tona e foram resolvidos. Nos próximos posts publicarei algumas técnicas que foram utilizadas para resolver os problemas de Lazy Load, transações, múltiplas sessões e open session in view.</p>
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
<p class="western" style="margin-bottom: 0cm; text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2008/10/20/hibernate-dicas-para-desenvolvedores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
