Castle ActiveRecord
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 “Castle ActiveRecord”.
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 - 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.
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.
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 - Create, Retrieve, Update, Delete), ai cría¡vamos os entities, a camada de acesso a dados - 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..
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… 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.
Com o Castle ActiveRecord bastou criar as classes Entities do projeto, mapear nas propriedades de cada objeto utilizando algumas tags muito simples, para “configurarmos” 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 - 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… compilar o projeto e num Console App para testar, basta instanciar o objeto e visualizar os métodos: save, update, delete … find, estão todos lá… tudo pronto para testarmos os objetos e utilizarmos eles na nossa aplicação.
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.
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…
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 - 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 :).
Utilizando o AR é possível gastarmos tempo com o que de fato interessa… Além de ser extremamente fácil durante o projeto, alterar o banco de dados, de Sql server 2000 para My Sql por exemplo.
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.
O Castle project é criação de um Brasileiro e é algo que está começando a aparecer no mercado… abaixo alguns links interessantes:
Site oficial do projeto: http://www.castleproject.org
O Castle ActiveRecord: http://www.castleproject.org/activerecord/index.html
Link para os foruns: http://www.castleproject.org/community/forum.html
Artigo sobre o ActiveRecord: http://geekswithblogs.net/hammett/articles/76697.aspx
Castle na InfoWorld: http://www.infoworld.com/article/06/11/21/HNcastleproject_1.html
NHibernate for .NET: http://www.hibernate.org/
O HQL: http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html
Até!!
12/02/2007 | Disponível em: Castle Project |
O NHibernate é sensacional, e capacidade de separar banco de dados da implementação de classes.
O mais interessante que agora que a M$ está olhando, através do Ado.net vnext.
abs