Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao,web,bancodedadosemuitodesenvolvimento.
Camadadepersistnciadedados:DAOeActiveRecord
Publicadoem12dedezembrode2008por Finalmenteacamadadedados Acamada,oulayer,depersistnciaoudeacessoaosdadosapartedaaplicaoresponsvelporsecomunicarcomobancodedados,oucomoframeworkde persistncia,sendoosdoispadresmaisconhecidosoDAOeoActiveRecord.
abordagemdoframework. OproblemacomoActiveRecordqueseumodeloficacommuitaresponsabilidade,ActiverRedordnoEscala!,ecria"BFC"s(BigFuckingClasses),jqueomodelo almdeconterasregrasdenegciotambmcuidadobancodedados.EssaabordagemdoActiveRecordmuitasvezesconsideradaumafalhanodesigndaaplicao, pelofatodequeoDomniopassaasersubordinadodoBancodedados.Esteargumentopodeserrebatidojquenamaioriadossistemas,asclassesdoModeloso apenasrepresentaesdoDomnio,enoprogramamregrasemsi,equeessasregraspassamestarrepresentadasnapersistncia,noafetandoodesigndemuitas aplicaes. Naprtica,setemosumaclasseUsurioestadeveestenderumaoutraclasse,digamosRecord.Recordumaclasseprovidapeloframeworkdepersistncia,ela implementaosmtodosSelect,SaveeDelete.ElatambmexigequesejaimplementadoummtodoConfigurepelaclassefilha,paradefinirosparmetrosdobancode dados.Assimsemprequeprecisamosbuscarumusuriodobancodedados,usamosomtodoSelectdaprpriaclasseUsurio,eporaivai. SeporumladooActiveRecordatuadeformasimpleseexplorandoaflexibilidadedosframeworksdepersistnciadehojeedinamismodaslinguagens,oDAOporsua vezsurgenumambientedeframeworkmaisrgidosequedemandavammaiornumerodechamadaseconfiguraes.ODAOpraticamenteoopostodoActiveRecord, emdesign. AsclassesDAOrepresentamumacamadaprpria,eformamumpacotedeacessodedados,algumasvezessobopacotedomodelo,algumasvezesumpacote independenteeoutrasvezespartedopacotedecontroladores.OmaiscomummesmoqueopacotedeDAOfiquesubordinadoaoModelo,massemestendlo.Assim temosumaseparaoerelativaindependnciadacamadadeacessodadosedoDomnio.
OprincipioqueparacadaModelo,temosumDAOcorrespondente.TodainteraoeconfiguraocomoBancodedados,oucomoframeworkdepersistncia,ficamna camadadosDAO.EntooDAOpassaaprogramarmtodoscomoSelect,Delete,Insert,Updateeoutrosquevenhamasernecessrio.Podemprogramarmtodosmais especficos,comoselecionarOndeNomeComecaComLetraoucadastrarLista. ODAOpodeserusadotambmcomocamadaentreaaplicaoeomodelo,ouentrediferentesaplicaes.Passaseanoacessaromodelodiretamente(comnew)e usarosmtodosdoDAOparatal,masessaabordagemnemsempreusada.Assim,semprequequiserumainstnciadeumModelo,usaseoDAO. OusodeDAOs(oueraaomenos)bemmaiscomumnosprojetosJava.Comomuitosframeworksaindaerammuitorgidos,eprecisavamdemaiscdigoparafazero ORM,ouparaescreverqueriesmaispersonalizadas,essecdigopassouaresidirnacamadadoDAO,algumasvezestantoadescriodatransformaoORMquantoa montagemdasqueriesatravsdosmtodosdoframework.Ouento,emcasosondeasqueriesdeviamsermuitoprecisas,ainteraodiretacomoBancodedados. AabordagemdeDAOcostuma(va)serassociadaaumdesignmaiselegante,devidoseparaodascamadas.Assimtnhamosmaisflexibilidadeaomanipularo framework.Pormcomaevoluodosframeworks,estespassamaperderumpoucoautilidade,jquesonecessriaspoucaschamadasaosframeworkeestes conseguemcriarqueriescadavezmaiscomplexasautomaticamente. ODAOentraem"crise"comaevoluodosFramework,esuautilidadepassouaserquestionada,poismuitasvezespassaramsimplesmenteaprogramarosmesmos mtodosqueoframeworkprovia,apenasrepassandooschamados.Ficandoentreumcasodeprogramlosporpurodesignepassandoaseroverengineering.Como conhecimentodopadrodeRepositriosessescasopassouaserentendidodeoutraforma.. Naprtica,setemosummodeloUsurio,teremosumDAOUsurioDAO.AclasseUsurionosealtera,masimplementamosnaUsurioDAOosmtodosnecessrios, comoselect,saveedelete.OsmtodosdeUsurioDAOfazemasvalidaesnecessriasemontamaschamadasparaoframeworkdeacordocomasespecificaesdo Usurio,repassandoentooobjetoaoframework.PodeaindaimplementarmtodosespecificoscomovalidaLogin.Entoaoprecisarcriar,recuperarousalvarumobjeto usaseoDAOdeste. Apesardeterescritobastante,estaabordagemaindasuperficial.Apresenteiosprincipaisconceitosdestespadres,paraexemplosprticosbastaprocurarframeworks parasualinguagem.ParaoActiveRecordexistemvriasopes,masnaverdadenoexistemframeworkparaDAO,jqueDAOpodeserusadoemconjuntocomoutras abordagemdepersistncia. Umoutroimportantepontonacamadadepersistnciaeacessoaosdados,opadroRepositrio(repository),quesolucionoualgunsproblemasdosDAOeseadapta melhoraestesframeworksmaisflexveisemenoscomplexos,masesteficaparaumprximotexto. PublicadoemProgramaopor.MarqueLinkPermanente[http://manifesto.blog.br/2.0/Programacao/daoactiverecord].
10IDEIASSOBRECAMADADEPERSISTNCIADEDADOS:DAOEACTIVERECORD
Diogo em18demaiode2011s3:34disse:
TambmachooARmaisprticoesimplesemaplicaesdinmicas,masemmodelosmaiscomplexos prefirotrabalharcomrepositriosparatermaiorseparaoderesponsabilidadesnomodelo.
Marianna em6dedezembrode2009s0:40disse:
Excelenteexplanaosobreostemas!Estoufazendoumtrabalhosobrepersitnciadedadoseoseupost ajudoumuito!Valeu!
DiogoSouza em6dedezembrode2009s1:35disse:
Quebomquefoitil,esperoqueanotadotrabalhosejaboa:)
RenatoMedina em17demaiode2011s11:21disse:
Parabnspelopost.
ChrisBenseler em30dedezembrode2008s14:00disse:
Comoprogramadordeinterface/frontendquesou,essaexatamenteacamadadaqualeufujo!hehe Mass,belopost!
DiogoSouzadaSilva em1dejaneirode2009s23:32disse:
hehehepoisChris,jeu,comodeveimaginarnotenhomuitapacinciaparaescrevertelas:)
MarleneLima em22deabrilde2009s1:34disse:
Interessanteoqueescreveu!!! Ajudouatirarumasdvidas!!!
DiogoSouzadaSilva em22deabrilde2009s12:47disse:
Oba,quebomquelhefoitil!
FredericoMottinhadeFigueire em23dejunhode2009s23:35disse:
DiogoSouza em24dejunhode2009s21:46disse: