<?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 luisph &#187; Castle Project</title>
	<atom:link href="http://blog.luisph.com/category/castle-project/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.luisph.com</link>
	<description>blog luisph - desenvolvimento, TI, projetos, negócios, gestão, liderança, internet, tecnologia, programação, notícias e etc!</description>
	<lastBuildDate>Tue, 31 Aug 2010 04:54:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Castle ActiveRecord</title>
		<link>http://blog.luisph.com/castle-activerecord/</link>
		<comments>http://blog.luisph.com/castle-activerecord/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 19:45:00 +0000</pubDate>
		<dc:creator>Luís Fernandes</dc:creator>
				<category><![CDATA[Castle Project]]></category>

		<guid isPermaLink="false">http://luisph.com/?p=8</guid>
		<description><![CDATA[Vou começar escrevendo sobre um projeto open source, com o qual muito me surpreendi durante o ano passado. Conheci o projeto de forma inusitada, o certo é que somente depois de alguma insistência de um amigo meu (com o qual trabalhei até janeiro deste ano), com até um pouco de receio, resolvi verificar mais a [...]]]></description>
			<content:encoded><![CDATA[<p>Vou começar escrevendo sobre um projeto open source, com o qual muito me surpreendi durante o ano passado. Conheci o projeto de forma inusitada, o certo é que somente depois de alguma insistência de um amigo meu (com o qual trabalhei até janeiro deste ano), com até um pouco de receio, resolvi verificar mais a fundo esse tal &#8220;Castle ActiveRecord&#8221;.</p>
<p>No inicio achei que a idéia de não precisar de procedures ou t-sql e utilizar o HQL (Hibernate Query Language) não funcionaria.. por causa de performance ou algo do tipo &#8211; na realidade tive um pouco de receio. Mas como fica difícil agente descobrir como isso tudo funciona sem utilizar na prática, resolvemos tocar um projeto da empresa utilizando o Castle ActiveRecord pra ver no que ia dar.</p>
<p>O resultado foi um ganho de produtividade impressionante. Tarefas totalmente manuais e repetitivas que (pelo histórico) que poderiam nos tomar até uma semana, foram totalmente resolvidas em praticamente dois dias. Tirando que evitamos o uso de Copy/Paste que as vezes acabamos utilizando nesse tipo de tarefa e que normalmente acaba deixando algum bug para trás.</p>
<p>O nosso maior ganho foi pelo seguinte, falando somente do básico (resumidamente) antes tí­nhamos que criar as tabelas, criar as procedures básicas (CRUD &#8211; Create, Retrieve, Update, Delete), ai cría¡vamos os entities, a camada de acesso a dados &#8211; que chamava as procedures, e uma classe ou outra (dependendo de cada caso) que iriam ser utilizadas pela interface para acessar mais diretamente os objetos de acesso ao banco de dados e etc..</p>
<p>Nesse meio tempo tí­nhamos total repetição de código e desperdicio de tempo. Tivemos um projeto que só nessa brincadeira: tabelas, procedures, camada de acesso a dados, camada de negocio, etc&#8230; nós gastamos duas semanas inteiras, isso que não tinha validações, nem regras de negocio propriamente ditas, não tinha nada a não ser o básico mesmo.</p>
<p>Com o Castle ActiveRecord bastou criar as classes Entities do projeto, mapear nas propriedades de cada objeto utilizando algumas tags muito simples, para &#8220;configurarmos&#8221; o que era cada propriedade (a qual coluna na tabela pertencia por exemplo) e adicionar os métodos que já vem praticamente prontos. Após isso, o próprio AR possui um método que gera um script para gerar as tabelas por exemplo no banco Sql Server &#8211; não me lembro ao certo agora se é possivel que seja gerado script de outros bancos também. O fato é: basta rodar o script para gerar as tabelas e&#8230; compilar o projeto e num Console App para testar, basta instanciar o objeto e visualizar os métodos: save, update, delete &#8230; find, estão todos lá&#8230; tudo pronto para testarmos os objetos e utilizarmos eles na nossa aplicação.</p>
<p>Caso você precise criar algum método diferente, fazer alguma consulta mais refinada, o que eu tive de necessidade até o presente momento foi resolvido facilmente utilizando o proprio HQL e as funcionalidades do AR. É um pouco mais difí­cil no começo montar alguns relacionamentos tabela x tabela e objeto x objeto.. dependendo da complexidade do sistema, inicialmente pode parecer complicado como você vai montar isso. Mas com a pratica e alguma experiência você verá que não é tão complicado assim.</p>
<p>Além disso podemos contar com um fórum em inglês e agora também um em português no portal do castle project, para tirar duvidas, reportar algum tipo de bug e etc&#8230;</p>
<p>O Castle Project possui outros projetos que acredito que vale a pena investigarmos mais a fundo com o MonoRail ou o Windsor, mas eu pessoalmente utilizei somente o ActiveRecord, que de um modo geral mudou minha forma em como desenvolver sistemas &#8211; sei que vai acabar acontecendo mais dia menos dia, mas eu pessoalmente não consigo imaginar um projeto em que o AR se encaixe e que eu não o utilize <img src='http://blog.luisph.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Utilizando o AR é possí­vel gastarmos tempo com o que de fato interessa&#8230; Além de ser extremamente fácil durante o projeto, alterar o banco de dados, de Sql server 2000 para My Sql por exemplo.</p>
<p>Bom .. acho que é isso, creio que se você não conhece ou nunca utilizou ActiveRecord, vale a pena investigar um pouco mais sobre esse projeto.</p>
<p>O Castle project é criação de um Brasileiro e é algo que está começando a aparecer no mercado&#8230; abaixo alguns links interessantes:</p>
<p><span style="font-size:85%;">Site oficial do projeto: </span><a href="http://www.castleproject.org" target="_blank"><span style="font-size:85%;">http://www.castleproject.org</span></a><span style="font-size:85%;"><br />
O Castle ActiveRecord: </span><a href="http://www.castleproject.org/activerecord/index.html" target="_blank"><span style="font-size:85%;">http://www.castleproject.org/activerecord/index.html</span></a><span style="font-size:85%;"><br />
Link para os foruns: </span><a href="http://www.castleproject.org/community/forum.html" target="_blank"><span style="font-size:85%;">http://www.castleproject.org/community/forum.html</span></a><span style="font-size:85%;"><br />
Artigo sobre o ActiveRecord: </span><a href="http://geekswithblogs.net/hammett/articles/76697.aspx" target="_blank"><span style="font-size:85%;">http://geekswithblogs.net/hammett/articles/76697.aspx</span></a><span style="font-size:85%;"><br />
Castle na InfoWorld: </span><a href="http://www.infoworld.com/article/06/11/21/HNcastleproject_1.html" target="_blank"><span style="font-size:85%;">http://www.infoworld.com/article/06/11/21/HNcastleproject_1.html</span></a><span style="font-size:85%;"><br />
NHibernate for .NET: </span><a href="http://www.hibernate.org/" target="_blank"><span style="font-size:85%;">http://www.hibernate.org/</span></a><span style="font-size:85%;"><br />
O HQL: </span><a href="http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html" target="_blank"><span style="font-size:85%;">http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html</span></a><br />
<span style="font-size:78%;"></span><br />
Até!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luisph.com/castle-activerecord/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
