You are on page 1of 12

Tcnicas de mapeamento objeto relacional Apesar do paradigma orientado a objetos estar sendo cada vez mais difundido no processo

de desenvolvimento de software, no existem hoje solues comerciais robustas e amplamente aceitas neste paradigma para a persistncia de dados. ercado este dominado pelos bancos de dados relacionais. !este contexto, o mapeamento do modelo orientado a objetos para o relacional " uma necessidade cada vez mais importante no processo de desenvolvimento. #mbora o uso de framewor$s de persistncia seja comum, " fundamental o entendimento das t"cnicas de mapeamento objeto relacional. %sso facilitar& tanto o uso dos framewor$s como tamb"m uma an&lise mais criteriosa dos mapeamentos realizados de forma autom&tica caso seja necess&rio algum ajuste no c'digo implementado. Modelo relacional A abordagem relacional est& baseada no princ(pio de )ue as informaes em uma base de dados podem ser consideradas relaes matem&ticas e )ue esto representadas de maneira uniforme com o uso de tabelas bidimensionais. Ao se fazer a an&lise para o desenvolvimento de uma aplicao, " muito importante saber se os tipos de dados a serem armazenados so tipos simples, tais como strings e n*meros. +e este for o caso, " mais indicada a utilizao de +,-.s relacionais. Vantagens /s +,-.s relacionais possuem uma caracter(stica muito importante0 so extremamente confi&veis e mais eficientes, se comparados 1 maioria dos +,-.s orientados a objetos dispon(veis no mercado. Al"m disso, o modelo de dados relacional foi criado para permitir a representao de uma grande variedade de problemas usando um pe)ueno conjunto de conceitos simples. Atrav"s da linguagem de consulta +23 4+tructured 2uer5 3anguage6 " poss(vel fazer a busca e recuperao dos dados necess&rios de forma bastante eficiente. .entre as vantagens do modelo relacional, talvez a mais importante esteja relacionada com a persistncia dos dados. As regras e rotinas para tratamento da persistncia dos dados podem ser criadas no pr'prio banco de dados relacional. Desvantagens 7ma das grandes desvantagens do modelo relacional pode ser observada no momento da realizao da an&lise de um sistema a ser implementado0 a grande dificuldade em abstrair a realidade, ou seja, traduzir para um modelo de tabelas, com suas relaes entre si, suas chaves prim&rias e estrangeiras, um problema do mundo real. Modelo orientado a objetos / modelo de dados orientado a objetos " uma extenso do paradigma orientado a objetos, possuindo basicamente os mesmos conceitos. / paradigma orientado a objetos se baseia na construo de aplicaes a partir de objetos abstra(dos da realidade, com dados e comportamento associados. #sses objetos possuem atributos 4propriedades )ue cont"m valores )ue descrevem o objeto6 e m"todos 4especificaes de comportamentos dos objetos6. Al"m disso, o modelo /rientado a /bjetos possui outras caracter(sticas importantes, dentre as )uais se pode destacar as mostradas na Tabela 1 8& na Tabela 2 podem ser observadas as principais caracter(sticas de um objeto. Tabela 1. 9rincipais caracter(sticas do Conceito Descrio #ncapsulamento odelo /rientado a /bjetos.

/s valores dos atributos e os detalhes da implementao dos m"todos esto escondidos de outros objetos. #m banco de

dados se diz )ue um objeto est& encapsulado )uando o estado " oculto ao usu&rio e o objeto pode ser consultado e modificado exclusivamente por meio das operaes a ele associadas. ensagens ;erana eio de comunicao entre objetos. :roca de mensagens significa chamar um m"todo do objeto. <elacionamento entre classes numa hierar)uia. = a capacidade de criao de uma nova classe a partir de outra existente. 2uando uma classe herda caracter(sticas de mais de uma classe, diz>se )ue houve herana m*ltipla. As principais vantagens de herana so prover uma maior expressividade na modelagem dos dados, facilitar a reusabilidade de objetos e definir classes por refinamento, podendo fatorar especificaes e implementaes como na adaptao de m"todos gerais para casos particulares. ?apacidade de existir diferentes implementaes para m"todos com a mesma assinatura em diferentes classes da mesma hierar)uia de herana. #m sistemas polim'rficos, uma mesma operao pode se comportar de diferentes formas em classes distintas.

9olimorfismo

Tabela 2. 9rincipais caracter(sticas de um /bjeto. Caracterstica Descrio #stado ?omportamento %dentidade %ndica como se encontram as informaes encapsuladas pelo objeto. .efine o modo )ue um objeto age e reage em termos das suas mudanas de estado. = a propriedade )ue distingue um objeto de outro. ?ada objeto possui uma identidade *nica.

Vantagens !o modelo /rientado a /bjetos, a abstrao da realidade " mais simplificada, pois um objeto nada mais " do )ue uma abstrao direta da realidade. 9or exemplo0 um computador tem teclado, cpu e mouse. / teclado " um objeto, a cpu " outro objeto e o mouse tamb"m " um objeto. /utra grande vantagem deste modelo " a )uesto da reutilizao. 7m objeto pode ser facilmente reutilizado no mesmo programa ou at" mesmo em programas diferentes. / modelo orientado a objetos foi projetado para a criao e representao de estruturas complexas de uma maneira coerente e uniforme. %sto representa uma grande vantagem em relao ao modelo de dados relacional, )ue foi criado sem se preocupar com o armazenamento de estruturas mais complexas. /utro ponto a favor do modelo orientado a objetos " a facilidade em expressar relaes complexas entre objetos. Desvantagens / paradigma orientado a objetos apresenta um problema0 os bancos de dados atuais no oferecem uma boa aderncia aos princ(pios da orientao a objetos. %sto ", em termos de armazenamento, os bancos de dados orientados a objetos no conseguiram ainda substituir a tecnologia comprovadamente eficiente dos bancos de dados relacionais. #m funo disso, os administradores e desenvolvedores de bancos de dados acabam ficando em uma situao dif(cil, pois mesmo )uerendo adotar a orientao a objetos, eles tm )ue parar na hora de manipular seus dados. At" mesmo linguagens de programao orientadas a objetos, como 8ava, acessam os bancos

de dados de maneira convencional e utilizando +23. ?om isso, um mesmo programa acaba tendo uma parte orientada a objetos e outra parte estruturada, fazendo com )ue as caracter(sticas da orientao a objetos no possam ser exploradas na sua plenitude. .evido a isso, o )ue est& ocorrendo nos dias de hoje " )ue o desenvolvimento " orientado a objetos, mas o banco de dados " relacional ou objeto>relacional. !o modelo orientado a objetos, a implementao acaba se tornando mais complicada do )ue no modelo relacional, pois as estruturas de dados usadas no banco e as usadas na programao podem ser completamente diferentes. %sso refora a necessidade da criao de uma camada de persistncia, fazendo com )ue se gaste um bom tempo do desenvolvimento para mapear as estruturas da programao em estruturas do banco de dados. Bancos de dados orientados a objetos /s bancos de dados orientados a objetos podem ser divididos em dois grupos0 -ancos de .ados 9uramente /rientados a /bjetos 4-.9//60 baseia>se somente no modelo de dados orientado a objetos. #st& baseado no conceito de objetos persistentes e usa declaraes de classes muito semelhantes 1s declaraes das linguagens orientadas a objetos@ -ancos de .ados /bjeto><elacionais 4-./<60 correspondem a bancos relacionais )ue possibilitam o armazenamento de objetos. Caractersticas dos BD !! As principais caracter(sticas dos -ancos de .ados 9uramente /rientados a /bjetos so0 9ermitem a representao de relacionamentos A>n, n>n e de herana@ A representao de um relacionamento " feita incluindo>se dentro de um objeto os Bobject identifiersC dos outros objetos com os )uais ele se relaciona@ o B/bject %dentifierC " um identificador interno do banco de dados para cada objeto. /s Bobject identifiersC so atribu(dos e utilizados somente pelo +,-., nunca pelos usu&rios. !o possuem um padro *nico de implementao como os bancos relacionais. Assim, cada produto tem a sua pr'pria especificao para criao de classes e relacionamentos@ /s -.9// tendem a seguir um padro estabelecido pelo /. , 4/bject .atabase anagement ,roup6. A *ltima verso disponibilizada pelo /. , " a verso D.E, )ue pode ser obtida em no endereo . Caractersticas dos BD!" ?om relao aos -ancos de .ados /bjeto><elacionais, pode>se dizer )ue as principais caracter(sticas so0 7m banco objeto>relacional " um banco )ue permite o armazenamento de objetos em suas tabelas@ 7ma classe representa um dom(nio, atuando como um data t5pe para uma coluna. A classe, diferentemente dos bancos orientados a objetos, no representa mais um elemento envolvido em relacionamentos@ :odas as regras de um banco relacional continuam v&lidas@ 7ma coluna cujo data t5pe seja uma classe, s' poder& ter uma instFncia desta classe. %magine, por exemplo, uma coluna cujo data t5pe seja uma classe :#3#G/!#. !os -./<, esta coluna no poder& ter v&rias instFncias da classe :#3#G/!#, mas apenas uma. +e o banco fosse //, poderia ter mais do )ue uma. .entre as principais vantagens dos -./<, pode>se citar )ue todo o suporte para ao paradigma orientado a objetos est& presente. Al"m disso, j& existe um padro de

implementao estabelecido, determinando uma certa facilidade de convivncia com os sistemas j& existentes. !a Tabela # podem ser observados alguns dos principais -./< dispon(veis no mercado. Tabela #. 9rincipais -./< no mercado. $abricante Descrio %/racle ?orporation 9ostgre+23 ,lobal .evelopment ,roup icro .atabase +5stem, %nc. %nters5stems %nformix e .-H /racle Ii 9ostgre+23 :%:A!%7 ?ach"

Mapeamento objeto relacional #m termos conceituais, uma ?amada de 9ersistncia de /bjetos " uma biblioteca )ue permite a realizao do processo de persistncia 4isto ", o armazenamento e manuteno do estado dos objetos em algum meio no>vol&til, como um banco de dados6 de forma transparente. .entre as diversas vantagens obtidas com a utilizao da ?amada de 9ersistncia, pode>se destacar o fato do analistaJprogramador poder trabalhar como se estivesse em um sistema completamente orientado a objetos. /utra vantagem muito importante " )ue os acessos realizados diretamente ao banco de dados da aplicao so isolados, e os processos de construo de consultas e operaes de manipulao de dados so centralizados em uma camada de objetos inacess(vel ao programador. #sse encapsulamento torna as aplicaes mais confi&veis, permitindo at" mesmo )ue o pr'prio +,-. ou a estrutura de suas tabelas possam ser alterados sem a necessidade de revisar e recompilar os programas. Apesar disso, o modelo de classes de um projeto orientado a objetos no pode simplesmente ser traduzido em um script +23 de criao de banco de dados, " necess&rio realizar o mapeamento de objetos em um modelo de dados #ntidade> <elacionamento. "egras para mapeamento 9ara garantir )ue todas as caracter(sticas do modelo de objetos sejam reproduzidas fielmente pelo banco de dados relacional, alguns aspectos merecem ser destacados. /s objetos formam unidades )ue encapsulam atributos e operaes. /s bancos de dados relacionais representam de forma bastante eficiente os atributos, mas so limitados na representao das operaes. 9ode>se tentar estabelecer uma analogia entre objetos e tabelas, e entre atributos e colunas. 9ara mapear um objeto em uma tabela relacional, geralmente os atributos desse objeto so representados atrav"s de colunas na tabela. #ntretanto, essa no " uma regra )ue pode ser seguida ao p" da letra, pois existem outras consideraes a serem feitas 4tipos dos dados, tamanho dos campos, entre outras6. :ais consideraes podem fazer com )ue um atributo seja mapeado em v&rias colunas, ou ento )ue v&rios atributos sejam mapeados em apenas uma coluna. Ao se realizar uma transposio de um modelo orientado a objetos para um modelo relacional, algumas regras devem ser seguidas 4vale destacar a)ui )ue essas regras no so r(gidas60 A. :odas as tabelas 4ou relaes6 devem ter uma chave prim&ria. #m um sistema orientado a objetos, cada objeto " *nico. #ssa unicidade " garantida atrav"s da introduo de um Bidentificador de objetosC 4OID Object IDentifier6. #sse /%. " gerado pelo sistema, no podendo ser alterado pelo usu&rio. +eu valor no depende dos valores dos atributos do objeto.

9ara fazer essa implementao no modelo relacional, deve ser criado um atributo /%. para cada tabela. !a $ig%ra 1" mostrado um exemplo de como seria o mapeamento do objeto 9edido para a tabela 9edido.

$ig%ra 1. #xemplo A. H. apeamento de atributos. #xistem trs tipos de atributos para serem mapeados. /s atributos simples so mapeados para colunas. /s atributos compostos podem ser mapeados em v&rias colunas. 8& os atributos multivalorados devem ser mapeados em tabelas onde a chave prim&ria " composta pela chave prim&ria da tabela )ue representa a classe )ue cont"m o atributo multivalorado e pela chave prim&ria )ue representa o atributo multivalorado. !a $ig%ra 2 pode ser observado um exemplo de mapeamento de um atributo simples 4!ome e .t!ascimento6 e de um atributo composto 4#ndereco6. 8& na $ig%ra # pode ser observado um exemplo de mapeamento de um atributo multivalorado 4:elefone6.

$ig%ra 2. Atributos simples e compostos.

$ig%ra #. Atributos multivalorados. D. ;erana0 pode>se mapear este conceito de trs formas. A primeira " simplesmente criar uma tabela para cada classe. A segunda forma " criar uma *nica tabela para toda a hierar)uia de classes. 9or *ltimo, pode>se criar uma tabela para cada classe concreta.

!a t"cnica de criao de uma tabela para cada classe 4$ig%ra &6, os atributos da tabela so os atributos espec(ficos da classe e mais uma coluna de chave estrangeira )ue referencia a chave prim&ria da tabela pai. As desvantagens do uso dessa t"cnica " )ue so geradas muitas tabelas no banco de dados, fazendo com )ue haja uma demora maior para ler e gravar os dados. 9or esse mesmo motivo, algumas consultas acabam sendo bastante dificultadas, obrigando a criao de views para agilizar o processo. +e for utilizada a segunda forma 4$ig%ra '6, a classe raiz " tomada por base, pois " nela )ue todos os atributos so armazenados. #ssa t"cnica facilita as consultas, pois os dados de um objeto esto em uma *nica tabela / principal problema " )ue, potencialmente, h& um desperd(cio de espao no banco de dados. Al"m disso, a performance pode ser prejudicada.

$ig%ra &.

apeamento de uma tabela por classe.

$ig%ra '. 7ma *nica tabela para toda a hierar)uia de classes. ?aso se opte por criar uma tabela para cada classe concreta 4$ig%ra (6, deve>se incluir em cada tabela tanto os atributos espec(ficos, )uanto os atributos herdados da classe )ue ela representa. ?omo os dados de uma classe ficam todos em uma *nica tabela, as consultas so facilitadas.

$ig%ra (. 7ma tabela para cada classe concreta. K. Associaes uitos>para> uitos0 neste caso devemos criar uma tabela associativa em )ue a chave prim&ria " composta pelas chaves prim&rias das tabelas associadas 1 famosa e j& conhecida entidade ou tabela associativa.

!a $ig%ra ) pode ser visto um exemplo da transposio de uma associao muitos>para>muitos. !o modelo orientado a objetos havia dois objetos 4Aluno e .isciplina6, )ue no modelo relacional passaram a ser representados por trs tabelas 4Aluno, .isciplina e Gre)uenta6.

$ig%ra ). Associao muitos>para>muitos. L. Associaes uitos>para> uitos com ?lasse de Associao0 neste caso, aplica>se a regra da associao muitos>para>muitos e os atributos da classe associativa permanecero na tabela )ue " gerada para mapear a associao. !a $ig%ra * pode>se observar um exemplo de como " feita a transposio de um associao de muitos para muitos.

$ig%ra *. Associao muitos>para>muitos com agregao. M. Associaes 7m>para> uitos0 neste caso, a tabela cujos registros podem ser endereados diversas 4lado uitos do relacionamento6 vezes " a )ue herda a referncia da tabela cuja correspondncia " unit&ria. !a $ig%ra + pode>se observar um exemplo onde a tabela 9edido possui uma chave estrangeira 4GN6 )ue referencia a tabela ?liente.

$ig%ra +. Associao um>para>muitos. O. Associaes 7m>para> uitos com ?lasse de Associao0 neste caso, aplica>se a regra da associao um>para>muitos e os atributos da classe associativa so herdados como atributos normais pela tabela )ue herda a chave estrangeira 4ver $ig%ra 1,-.

$ig%ra 1,. Associao um>para>muitos com agregao. P. Associaes 7m>para>7m0 nesse tipo de associao, o analista deve optar por gerar uma *nica tabela no modelo relacional, ou ento gerar duas tabelas 4uma para cada classe6.

+e for escolhida a primeira opo, os atributos da classe agregada devem ser colocados na mesma tabela da classe agregadora. !essa t"cnica, a performance " melhor, pois " preciso acessar uma *nica tabela. Al"m disso, o objeto agregado " automaticamente exclu(do )uando o objeto agregador " eliminado, no havendo a necessidade da implementao de triggers ou rotinas especiais na aplicao para garantir a consistncia do banco de dados. A grande desvantagem dessa t"cnica " )ue a incorporao dos atributos aumenta a )uantidade de p&ginas )ue so recuperadas em cada acesso 1 tabela.

!o caso da opo ser pela gerao de duas tabelas, uma delas deve herdar como um atributo normal 4chave estrangeira6 a chave prim&ria da outra tabela. #ssa t"cnica facilita a manuteno das tabelas e torna a estrutura do banco de dados mais flex(vel. 9or"m, as consultas necessitam de uma operao de juno 4join6 ou pelo menos dois acessos ao banco de dados. +e o acesso aos dados de ambas as tabelas no for muito fre)Qente, esta alternativa " aceit&vel, caso contr&rio, essa alternativa pode no ser a mais ade)uada. /utra desvantagem de gerar uma tabela para cada classe " )ue para manter a consistncia do banco de dados entre essas tabelas, por ocasio de operaes de excluso de objetos, " necess&rio implementar triggers ou rotinas especiais na aplicao. !a $ig%ra 11 pode ser observado um exemplo da utilizao da t"cnica de gerao de uma *nica tabela, com a utilizao de um prefixo para distinguir os atributos 49ag?h6. /s objetos 9edido e 9agto em che)ue so transpostos na tabela 9edido. 8& na $ig%ra 12 " demonstrada a utilizao da segunda t"cnica 4gerao de duas tabelas6, onde os objetos 9edido e 9agto em che)ue so transpostos nas tabelas 9agamento e 9agamento?he)ue.

$ig%ra 11. Associao um>para>um R uma *nica tabela.

$ig%ra 12. Associao um>para>um R uma tabela para cada classe.

./emplo de mapeamento A $ig%ra 1# mostra como seria o mapeamento de um sistema simplificado de controle de uma biblioteca. Atrav"s deste exemplo, pode>se observar a aplicao de algumas das regras explicadas na seo anterior. = importante lembrar )ue as regras descritas admitem uma certa variao, no sendo totalmente r(gidas.

$ig%ra 1#. apeamento do modelo de dados de um sistema de controle bibliotec&rio simples. Concl%so !os casos onde se faz necess&rio realizar o mapeamento de um modelo orientado a objetos para um modelo relacional, mais do )ue )ual)uer outro fator, o mais importante " realizar uma an&lise criteriosa, analisando cada caso individualmente. / fundamento dessa an&lise deve estar baseado nas regras de mapeamento

existentes, por"m, como todas as regras, sempre existem excees )ue precisam ser analisadas com cuidado. As regras de mapeamento j& ad)uiriram certa maturidade, uma vez )ue vm sendo propostas e aperfeioadas h& v&rios anos. Alguns autores definem as regras de forma bastante gen"rica, en)uanto outros especificam detalhadamente cada regra, preocupando>se com as poss(veis excees e at" mesmo subdividindo algumas regras. 9or"m, todos so unFnimes em afirmar )ue uma boa an&lise individual sobre cada caso, verificando os objetos individualmente e como um todo, " muito importante. At" mesmo )uando so utilizadas ferramentas )ue fazem o mapeamento de forma autom&tica, deve>se analisar o modelo obtido para verificar como ficaram as tabelas, pois pode haver excees )ue precisam ser tratadas de forma manual.

You might also like