FireDAC (AnyDAC) – O que isso representa para os desenvolvedores Delphi e C++
Recentemente a Embarcadero adquiriu o AnyDAC, conjunto de componentes para a acesso a banco de dados infinitamente superior ao dbExpress. Como resultado desta aquisição, o AnyDAC foi renomeado para FireDAC e acaba de se tornar parte do Delphi e C++Builder XE3, os usuários da edição Enterprise podem baixar o FireDAC gratuitamente, os usuários do Delphi Professional podem adquiri-lo por US$ 399.
Por muito tempo o até então AnyDAC permitiu aos desenvolvedores Delphi e C++ que usavam a edição Professional conectar a bancos de dados como Oracle, SQL Server, Sybase, Informix e outros, algo que até então somente era possível com as edições Enterprise e Architect.
Eu tenho muito o que dizer sobre o AnyDAC agora então FireDAC, no início do ano passado dediquei pelo menos 1 mês avaliando o então conhecido AnyDAC e agora vocês sabem o porque :).
Eu fiquei bem impressionado com a quantidade de recursos que o AnyDAC oferecia e a superioridade em relação ao dbExpress. FireDAC é tudo aquilo que o dbExpress tentou ser e nunca foi, eu digo isso porque FireDAC permite que você desenvolva aplicações para múltiplos bancos de dados de forma RAD, sem ter que fazer gambiarras e jeitinhos que eram necessários com o dbExpress, como por exemplo: re-mapeamento dos TFields quandos eles eram persistidos na aplicação, acesso a vários outros banco de dados, muito mais simples o desenvolvimento, acesso a recursos específicos de cada banco e muito mais. Abaixo uma lista com alguns recursos suportados pelo FireDAC.
- Para todos os bancos de dados
- Recuperação automática da conexão com o banco
- Suporte unificad a eventos do banco de dados
- Arquitetura simplificada, isso quer dizer que você não precisará mais colocar 3 componentes (Query + ClientDataSet + Provider) para simplesmente ter um cursor bi-direcional
- Performance muito superior ao dbExpress
- TADMemTable – dataset em memória e mais rápido que o TClientDataSet
- Muito mais fácil migrar aplicações que ainda usam BDE para FireDAC, o que era mais trabalhoso quando se tentava migrar para dbExpress
- Oracle
- SELECT FOR UPDATE – não precisar mais de gambiarras como forçar UPDATE para travar um registro
- Abortar execução de Query – quem não precisa disso?
- Suporte a colunas ROWID – facilita e torna mais rápida a edição e refresh de dados
- Suporte a RETURNING clause para refresh mais rápido dos dados – você não precisa mais fazer um novo select para obter o valor de um campo que foi atualizado por uma trigger
- e muito mais…
- Firebird
- Suporte a RETURNING clause para refresh mais rápido dos dados
- Trusted authentication
- Suporte a serviços do banco de dados – backup, restore, validate, security, etc
- Abortar execução de Query
- PostgreSQL
- Isso mesmo, agora suporte nativo a PostgreSQL
- e muito mais…
- SQL Server
- Suporte a execução de comandos batch que retornam múltiplos result sets – Batch commands with multiple result sets
- Abortar execução de Query
- e muito mais
- MySQL
- Suporte a colunas AUTO_INCREMENT e retorno do último valor inserido
- Drivers para vários bancos de dados compatíveis com Windows, Mac e iOS
Essa é uma pequena lista do que o FireDAC oferece, você pode saber mais sobre outros recursos do FireDAC, acessando a lista de recursos do AnyDAC através deste link.
FireDAC é sem dúvida uma solução melhor, sem dúvida vale a pena migrar suas aplicações de BDE ou dbExpress para FireDAC, muito recursos que os desenvolvedores Delphi e C++ vinham pedindo por muito tempo, estão agora presentes no FireDAC.
Claro que todos estão perguntando “O que irá acontecer com o dbExpress?”, o BDE morreu mas continua sendo usado nos dia de hoje:), o dbExpress ainda não está morto e acho que irá levar um tempo para que a Embarcadero oficialmente deixe de suporta-lo, entretanto não há porque manter duas tecnologias de acesso a banco de dados no Delphi, como eu já disse FireDAC é muito superior ao dbExpress, assim sendo o futuro é FireDAC.
E como ficará o drive do datasnap, FireDac o suportará?
FireDac suporta DataSnap, além disso DataSnap é uma tecnologia separada que funciona.
Para aqueles que tem aplicações DataSnap e quiserem usar FireDac, basicamente você terá que mudar sua camada server.
Olá Andreano.
A algum tempo venho buscando respostas e estudando o Firedac para seu uso em aplicações 3 camadas.
Tem alguma dica? Quais são essas alterações? O cliente permanece a conexão DBX<- ProviderConnectionClient <-Dataset?
O dbExpress que era considerado por vocês muito bom, agora virou um lixo? Desanimante…
Acreditar nos empregados da empresa sobre a eficiência do produto sem ao menos testar é inocência completa. A Borland/CodeGear/Embarcadero empurrou como solução RaveReports, Intraweb e outras ferramentas que comprovaram ser infinitamente ruins. Hoje, somente após longos testes é que atualizo uma versão Delphi, porque a maioria dos recursos e ferramentas que surgem no upgrade não valem o preço.
Realmente Andreano, depois do lançamento, fiz download na empresa onde trabalho, instalei e estudei um pouco sobre o AnyDAC (FireDAC), o que vi até agora é como você disse, infinitamente melhor que o dbExpress, recursos impressionantes, show de bola!
Eu pensei que o DBExpress muito mais que “conjunto de componentes para a acesso a banco de dados” …. o DBexpress não é Framework ? e quanto a persistencia de objetos no FireDAC ? e quanto a execuçãod e metodos integrado ? e quanto ao suporte a datasnap que existe no DBExpress? olhe olhe, no mundo existe a lei do ganha e perde… nunca ganha ganha.
Andreano.
Acho o assunto sobre o AnyDAC/FireDAC muito interessante. Mas para todos aqueles que migraram do BDE para o dbExpress e embarcaram na tecnologia Datasnap, como fica o esforço ($$) aplicado na empreitada?
E como fica a compatibilidade do novo FireDAC com o Datasnap? O nível de mudanças que será necessário realizar? A Embarcadero irá disponibilizar suporte para esse tipo de situação?
Estou testando o FIREDAC com o PostgreSQL e senti infinitamente a falta de um parâmetro de conexão que havia no dbExpress e até em suites de terceiros como o UNIDAC, chamado “SchemaName” que me permitia trocar o search path default dos schemas do PostgreSQL. Eu tenho dois servidores que rodam em paralelo, um servidor PostgreSQL e outro Oracle. No servidor PostgreSQL as tabelas estão no esquema “X” e no servidor Oracle as mesmas tabelas estão no esquema “Y”. No dbExpress eu informava na conexão PostgreSQL o “SchemaName=public, Y” e trabalhava com as querys sem prefixar o nome das tabelas com o esquema. Com o Firedac não consigo mais fazer isso, tenho que prefixar as tabelas com o nome do esquema e com isso a mesma query não roda nos dois bancos de dados sem modificações.
Tambem apostei na VCL.NET…e onde essa está agora ?
Andreano, Quem possui o XE2 pode comprar o Firedac e usá-lo no XE2 ?
@Claudio – Sim, tem um parâmetro por linha de comando que permite instalar o Firedac no XE2
Sei la viu, na epoca da mudança do bde p/ dbexpress foi um parto. Pra mim o Delphi deveria vir com uma ferramenta própria pra migração completa neste tipo de situação.
Comigo também! Tivemos quem desenvolver uma ferramenta para migrar os códigos fazendo replace nos fontes…
Muito boa matéria, parabéns.
Eu já conhecia o AnyDAC (e outras ferramentas da “DA-Soft”) e em muitos pontos, assim como outros componentes, parecia superior ao dbExpress. A “velha” discussão sobre o que fazer quando a ferramenta ou parte desta muda, e de quem é a culpa… não leva a nada. As ferramentas mudam, o métodos mudam e até o S.O. muda (lembrem que até sistemas do MS deixam de funcionar na mudança de versão). O problema talvez seja mais cultural, já que se o projeto é dividido em camadas, encapsulamos e eliminamos acesso direto a componentes, eliminamos uma dependência bizarra, intrincada e espalhada pelos nossos sistemas. A metodologia empregada por nos não é culpa do fornecedor, é uma escolha nossa tanto para a qualidade do software, facilidade de manutenção e agilidade na atualização tecnológica. Abs.
Já conhecia os componentes da DA-Soft também. São muito superiores ao dbExpress e tinham preço bem acessíveis. Me preocupa a Embarcadero sair comprando ferramentas de terceiro e cobrar por elas, acho se o objetivo fosse melhorar o produto, elas deveriam vir com ele.
Andreano, muito bom o artigo. Era tudo que precisava ouvir porque na apresentação oficial do FireDAC nenhuma comparação foi feita com o dbExpress. Será por que? 🙂 hehehe
Obrigado Marcelo. Em breve vou escrever sobre isso 🙂
Venho trabalhando com o XE, que vem atendendo meus projetos, posso comprar o Firedac e usá-lo no XE ?
Quando resolvi migrar a forma de conexão com o banco, verifiquei dois conjunto de componentes de duas empresas. da-soft com Anydac e Devart com UNIDAC.
Optei pelo UNIDAC por apenas questão de gosto. Analisando os dois, verifiquei que são poucas as diferenças de configuração. A velocidade é a mesma e etc.
O que me fez escolher o UNIDAC foi o modo que trabalha com as instruções SQL. Você pode trabalhar com cada instrução de forma personalizada ou pode usar o modo convencional. O suporte também é muito bom.
Quanto ao DataSnap, se eu passar a usar o FireDAC, eu continuarei usando o Indy como plataforma de conexão!? Digo isso, porque o problema do DataSnap está aí, no Indy, que por sinal é uma porcaria de suite.
Ta de parabéns pelo artigo, muito bom mesmo, posta um artigo com o FireDAC acessando MsSqlServer e Oracle no mesmo aplicativo, e me responda tb, se seria possível obtenção de metadata dos bancos de dados…
Pó Andreano, agora toh feliz mas toh usando o noDB.. e advinha…
@Newton, você nunca sabe o que quer 🙂
Quando você irá publicar um post mostrando a utilização do FireDAC e mostrando o que precisamos enviar para os clientes depois da aplicação feita?
Andreano, parabéns pelo artigo, aliás, você saberia nos dizer onde poderíamos adquirir o FireDAC por US$ 399,00 como foi citado? A Embarcadero do Brasil tá enfiando a faca.
Obrigado Fabricio.
Ai no Brasil esta é a única opção, você poderia falar direto com a Embarcadero aqui nos EUA e tentar algo.
Olá Andreano.
Estou trabalhando com o FireDAC e gostei muito da performance do componente, além de ser muito fácil de usar.
Estou enfrentando um problema e talvez você saiba o que pode estar acontecendo.
Quando utilizo no componente ADConnection, em Options > Update Options > Locking > Lock Mode: Pessimistic e Lock Point: Immediate, não consigo gravar nada nas tabelas detalhes onde possui relacionamento Master – Detail. Se tentar mais de uma vez, ele retorna erro dizendo que a PK já existe e não pode ser utilizada. Isso acontece somente utilizando este tipo de travamento de registro. Se sabe me dizer o porque isso acontece?
Uma dúvida que tenho, este componente tem recurso pra atualizar terminal na rede se caso alguma máquina conectada no mesmo banco inserir, deletar ou atualizar algum dado? Como vi essa opção de travamento, achei que pudesse ter algo pra fazer essa atualização tbm.
Grato.
Ola Andreano…
Onde posso conseguir um exemplo utilizando firedac em 3 camadas?
Obrigado.
O FireDAC pode ser instalado no Delphi® 2007 for Win32? Se tiver, links para download…
@Fernando você pode baixar a versão atual do FireDAC e através de linha de comando usar em versões anteriores ao XE4, não estou seguro se Delphi 2007 é suportado.
Voltei a usar o Delphi a 2 meses. Migrei para .NET em 2006, mas a Microsoft tá despirocada de vez. Não sabe pra onde vai.
Coincidência ou não o Delphi vai pro mesmo caminho e os envolvidos continuam os mesmo. Vendedores de sonho…. e quem usa vai
gastando tempo e dinheiro para não perder o que já fez.
Pelo menos largaram o Java e agora precisam largar o C e se dedicar ao Pascal que a maioria usa.
Tecnologia usa a essência do Markteting. Produtos recicláveis e inováveis a todo tempo para que as pessoas vivam recomprando…
Vamos evoluir para a nova DROGA do momento.
Vi e gostei do FireDac.
Mais fácil migrar as Aplicações do BDE para FireDAC do que para DBExpress que nem cheguei a usar direito.
Para Migrar do DBExpress para FireDac mais difícil do que o BDE para FireDac.