Você está na página 1de 4

Anlise dos melhores ORM (Object-Relational Mapping) para plataforma .

NET
O que um ORM?
Voc que desenvolvedor de aplicaes orientadas a objetos, sabe que de alguma maneira precisa armazenar e recuperar informaes em bancos de dados relacionais. Um ORM (Object-Relational Mapping), nada mais do que um Framework ou um conjunto de classes que permite que voc faa este trabalho sem precisar escrever cdigos de conexo com o banco, querys de SQL a todo momento, preservando as caractersticas de orientao a objetos da linguagem face natureza relacional dos bancos de dados atuais.

Vantagens de se usar um ORM


Voc escreve menos cdigo e programa com muito mais produtividade. Seu cdigo fica mais elegante. mais fcil de dar manuteno no projeto. Melhora a padronizao da sua aplicao.

Exemplo de um cdigo em .NET usando ORM: Usuario.AddNew(); Usuario.FirstName = this.txtFirstName.Text; Usuario.LastName = this.txtLastName.Text; Usuario.Save(); Exemplo de um cdigo em.NET usando classes nativas do .NET Framework: strConn = "string de conexo aqui"; SqlConnection objCon = new SqlConnection(strConn); SqlCommand objComand = objCon.CreateCommand(); objComand.CommandText = "insert into Usuario (FirstName , LastName ) values (@FirstName , @LastName )"; objComand.CommandType = CommandType.Text; objComand.Parameters.Add("@FirstName ", txtFirstName.Text ); objComand.Parameters.Add("@LastName ", txtLastName.Text ); objComand.ExecuteNonQuery(); importante ressaltar que dificilmente voc achar uma soluo que substitua 100% das classes do ADO.NET, eventualmente voc ser obrigado a fazer uma gambiarra no meio do caminho para obter determinados resultados. No entanto, seguramente os melhores Frameworks resolvero mais de 95% das suas necessidades.

Como escolher um ORM


Estes so os critrios que utilizo quando escolho um ORM para adoo dentro de uma empresa ou projeto. Qualidade da documentao Tipo e qualidade do suporte Custo Curva de aprendizado Continuidade (Novos releases do projeto e periodicidade) Capacidade de execuo de stored procedures do legado Bancos de dados suportados Suporte a querys dinmicas Suporte a dados hierarquizados

DataBind a .Net controls Capacidade de fazer transaes Performance Facilidade de manuteno do cdigo (incluindo a a inteligibilidade do mesmo)

Normalmente, o frameworks que existem atuam como geradores de cdigo criando classes baseadas nas suas tabelas de banco de dados. Existem vrios frees e pagos. Os frees normalmente carecem de suporte e documentao, os pagos conseguem suprir melhor esta deficincia por um motivo bvio. Os melhores frees so o que possuem amplo apoio da comunidade ou tm um grupo de desenvolvedores bastante ativos distribuindo novos releases num curto espao de tempo. Nota do autor: Estou referenciando os frees como aqueles que voc pode usar sem pagar pela licena de uso. Isso no quer dizer que eles sejam Open Source, Software Livre, GPL ou FreeWare nem nada, ok? No estou entrando neste mrito. Veja no site do produto a forma de utilizao, licenciamento e distribuio de cada um para saber mais.

Anlise de alguns dos principais ORMs


Procurando no Google e em sites especialidados, descobri mais de 40 deles. Boa parte j teve seu desenvolvimento abandonado (a maioria Free), mas os melhores tm conseguido sobreviver. Eu separei a lista em Inativos, Free e Pagos. Os Inativos so o que no tm tido releases lanados nos ltimos anos e tiveram seu desenvolvimento paralizado, provavelmente. Os critrios que utilizei para avaliao final foi estritamente pessoal. Em caso de dvidas, baixe o framework e teste-o para ter uma opinio prpria. Uma boa parte eu instalei e testei, mas a maioria eu no pude faz-lo por pura falta de tempo.

Produtos Inativos
PRODUTO DotNorm Eldorado.NET JC Persistent Framework ObjectBroker OPF.Net (Object Persistent Framework) ORM.NET Sisyphus Persistence Framework iBATIS.NET NEO SITE VERSO

http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=b03d0b52Verso Beta 0. 8d32-47a3-bdda-d84e23717d7d== http://sourceforge.net/projects/eldorado-net/ http://sourceforge.net/projects/jcframework/ http://sourceforge.net/projects/objectbroker/ http://sourceforge.net/projects/opfnet/ http://www.olero.com/ http://sourceforge.net/projects/sisyphuspf/ http://sourceforge.net/projects/ibatisnet/ http://neo.codehaus.org/ Verso 2.2 Verso 1.0 Verso 1.7 Verso 1.2.7 Verso 1.2 Verso 1.4.2

Verso Beta 0.

Nenhum releas

Produtos Frees
PRODUTO Gentle.NET SITE VERSO CARACTERSTICAS Persistncia, Querys, Cache, Relacionamento.

http://www.mertner.com/confluence/display/Gentle/Home Verso 1.2.9

MyGeneration

http://www.mygenerationsoftware.com/

Verso 1.2

Gerador de cdigo baseado em templates e banco de dados. Os recursos dependem dos templates. Persistncia, Colees, Suporte a alguns bancos, Querys, Configurao rpida, Releases rpidos

Subsonic

http://www.codeplex.com/actionpack

Verso 2.0.1

NHibernate

http://www.hibernate.org/343.html

Verso 1.2

Persistncia, Herana, Relacionamento, Querys, Suporte a vrios bancos, Transaes e muito mais.

DataTier Generator CODUS ObjectMapper

http://sourceforge.net/projects/csharpdatatier/ http://www.adapdev.com/codus/

Verso 4 Verso 1.4.0 Verso 2005

Gerador de cdigo puro, apenas SQL Server.

Persistncia, Herana, Relacionamento, Suporte a vrios bancos, Querys, NUnit, WebServices, Colees, Suporte a Nhibernate/Ibatis,Gentle. IDE UML que mapeia para o ORM (Npersist e Nhibernate).

http://www.objectmapper.com/Home/Default.aspx

Produtos Pagos
PRODUTO LLBLGen Pro DataObjects.NE T NDO.NET Nolics.NET SITE http://www.llblgen.com/ http://www.x-tensive.com/Products/DataObjects.NET/ http://www.netdataobjects.com/ http://www.nolics.net/ VERSO Verso 2.0 Verso 3.9 Verso 1.2 Verso 4.2 CARACTERISTICAS

Persistncia, IDE Prpria, Suporte a vrios bancos, Relacionamento, Herana, Colees, Querys. Persistncia, Herana, Relacioname Querys, Suporte a vrios bancos, Transaes, Segurana, Remoting. Persistncia, Herana, Relacioname Querys, Suporte a vrios bancos.

FastObjects.NET http://community.fastobjects.com/community_fastobjects_net.htm Beta Persistor http://www.persistor.net/ Verso 1.3.1

Persistncia, Querys, Colees. Persistncia, Colees, Integrao c VS2003, Foco em outras linguages.

Entity Spaces eXpress Persistent Objects TierDeveloper Genome RapTier Wilson ORMapper for .NET DEV Force

http://www.entityspaces.net/Portal/Default.aspx

Verso 2007

Persistncia, Herana, Relacioname Querys, Suporte a vrios bancos. Persistncia, Colees, Suporte a v bancos, Querys, Transao, DataSo Prprio, SQL CE, LINQ, Gerao de Grids automaticamente. Persistncia, Querys, Colees, Transao.

http://www.devexpress.com/products/net/xpo/index.asp

Verso 2007.1.3

http://www.alachisoft.com/ http://www.genom-e.com/ http://www.sharppower.com/ http://www.ormapper.net/

Verso 5.6 Verso 3.2 Verso 1.4.2 Verso 1.0

Persistncia, Herana, Relacioname Suporte a vrios bancos, Transae Ajax, WebServices, Grids. Persistncia, Querys, Suporte a SQ Oracle e DB2., Integrao com VS.N Cache, Transaes. Persistncia, Herana, Relacioname Suporte a vrios bancos, Transae Grids.

Persistncia, Herana, Relacioname Suporte a vrios bancos.

http://www.ideablade.com/

Verso 3.5

Persistncia, Herana, Relacioname Suporte a vrios bancos, WebServic Integrao com o VS, Transao, Segurana.

Concluso

Entre os Frees, e destaco os seguintes projetos que merecem um acompanhamento: NHibernate SubSonic Codus ObjectMapper

O NHibernate Subsonic so os que tm mais futuro, na minha opinio, pelo apoio da comunidade que desenvolve os projetos. Baseado no Hibernate do JAVA, o NHibernate Framework extremamento completo e poderoso, no entanto, eu particularmente no gosto de ficar configurando arquivos em XML para ele funcionar, alm dele ser um pouco mais complicado de ser mexer do que os outros. Existem alguns geradores de cdigo como o prprio MyGeneratiom e Codus que facilitam o trabalho de configurao do XML. O SubSonic tem a grande vantagem de a configurao ser quase nula. Ele l o schema do banco de dados e gera as classes de mapeamento quando voc d o primeiro build no projeto. O releases so muito rpidos permitindo que diversos bugs sejam corrigidos e as melhorias sejam implementadas num curto espao de tempo. Eu gostei muito de mexer nele, realmente muito simples. S precisa amadurecer um pouco mais. Entre os Pagos, os seguintes projetos se destacaram pelo custo/benefcio. - Entity Spaces - LLBLGen Pro - eXpress Persistent Objects Eu adquiri uma licena do Entity Spaces e est valendo o investimento. Estou em fase de aprendizado e implantao ainda. Eu particularmente gosto da idia de se pagar por um produto destes por conta da documentao que muito completa e do suporte que rpido. Enfim, escolha um deles, e divirta-se.