Você está na página 1de 32

SISTEMA DE ENSINO PRESENCIAL CONECTADO

ANLISE DE DESENVOLVIMENTO DE SISTEMAS

MARCOS DE ANDRADE VILALVA

PORTFLIO INDIVIDUAL 4 SEMESTRE

Disseminao de Banco de Dados Orientada a Objetos e Mapeamento Objeto Relacional

ARAATUBA 2013

MARCOS DE ANDRADE VILALVA

PORTFLIO INDIVIDUAL 4 SEMESTRE

Disseminao de Banco de Dados Orientada a Objetos e Mapeamento Objeto Relacional

Trabalho Modelagem

apresentado a

disciplinas: Redes de

Orientada

Objeto,

Computadores, Desenvolvimento Orientado a Objeto da Universidade Norte do Paran - UNOPAR.

Prof.(s). Paulo Kiyoshi Nishitani Polyanna P. Gomes Fabris Marcio Chiaveli

ARAATUBA 2013

Sumario 1 Introduo ................................................................................................................ 4 2 Objetivo .................................................................................................................... 5 3 Banco de Dados Orientado a Objetos ...................................................................... 6 3.1 Caractersticas dos Bancos de Dados Orientados a Objetos ..................... 6

3.2 Aplicao e Mecanismo de Funcionamento do Banco de Dados Orientado a Objeto ........................................................................................................................ 13 3.3 Diferena entre Banco de Dados Orientado a Objetos e Banco de dados Relacional.................................................................................................................. 18 4 Mapeamento Objeto Relacional ORM (Object Relational Mapper) ...................... 19 4.1 Desenvolvimento utilizando o Modelo Orientado a Objetos com um Banco de Dados Relacional ...................................................................................................... 19 4.2 Definio de ORM e Sua Utilizao .................................................................... 21 4.3 Ferramentas de Mapeamento Objecto-Relacional .............................................. 22 4.3.1 Mapeando objetos para tabelas ....................................................................... 22 4.3.2 Mapeando atributos .......................................................................................... 23 4.3.3 Mapeamento de classes em tabelas ................................................................ 23 4.3.4 Mapeamento de uma tabela por hierarquia ...................................................... 24 4.3.5 Mapeamento de uma tabela por classe concreta ............................................. 24 4.3.6 Lista de Ferramentas de mapeamento objeto-relacional.................................. 25 4.4 Vantagens x Desvantagens na Utilizao de Uma Ferramenta ORM ................. 29 Concluso ................................................................................................................. 31 Referncias ............................................................................................................... 32

1 Introduo Desde seu desenvolvimento at os dias atuais, bancos de dados relacionais


sempre foram os mais utilizados no cenrio comercial. Por outro lado, nos ltimos anos houve uma crescente disseminao das linguagens orientadas a objeto no desenvolvimento de aplicaes. Dessa forma, hoje existe um grande nmero de aplicaes orientadas a objeto que acessam bancos de dados relacionais. Com a necessidade de cada vez mais informatizar as empresas para manter-se no concorrido mercado, ser demonstrado s diferenas entre bancos de dados relacionas e orientados a objeto.

2 Objetivo Demonstrar a capacidade do Banco de Dados Orientado a Objetos, suas caractersticas e comparativos em relao ao Banco de Dados Relacional. Sero abrangidos conceitos de ORM (Object Relational Mapper), suas caractersticas, utilizao e ferramentas disponveis no mercado.

3 Banco de Dados Orientado a Objetos Os Banco de Dados Orientado a Objetos sugiram da necessidade de armazenar dados complexos e de acabar com a disparidade que havia na modelagem da aplicao e do Banco de Dados (BD). Com o advento das linguagens de programao orientadas a objetos, os programadores passaram a utilizar este paradigma e a modelagem ento naturalmente passou tambm a seguir este modelo. O outro ponto que objetos complexos precisam ser quebrados em diversas tabelas, ou relaes, para serem armazenados e com isto para recuperar tal informao preciso realizar um JOIN entre diversas tabelas. Com a orientao a objetos, possvel modelar objetos de forma mais prxima ao mundo real, como por exemplo, em um sistema de geoprocessamento, engenharia, pesquisa cientfica e tantos outros sistemas no triviais. Um Bando de Dados Orientado a Objetos BDOO permite ainda que a aplicao manipule objetos, independente se eles so persistentes ou no, pois possvel armazenar todo o objeto e no apenas seus atributos. Diferentemente do modelo Relacional, o BDOO no utiliza o conceito de chave primria ou secundria. As chaves foram substitudas pelo identificador de objeto (OID Objetct Identifier), que controlado pelo prprio SGBD Sistema Gerenciador de Banco de Dados e no visvel ao usurio do Banco de Dados. O OID pode ser visto como uma referncia ao objeto em memria, assemelhando-se a um ponteiro, porm um OID nunca alterado e nem reaproveitado, diferentemente do que acontece quando o objeto est em memria, onde utilizado o endereo fsico da memria RAM (Random Access Memory). Apesar da caracterstica mencionada, possvel criar campos como chave para facilitar a identificao dos objetos armazenados por parte do usurio.

3.1 Caractersticas dos Bancos de Dados Orientados a Objetos Uma caracterstica-chave dos bancos de dados orientados a objetos o poder dado ao projetista para especificar tanto a estrutura de objetos complexos quanto as operaes que podem ser aplicadas a esses objetos (Elmasri e Navathe, 2005, p. 459).

Umas das grandes razes de existirem os BDOO so atender s necessidades das aplicaes mais complexas e o uso crescente de linguagens de programao orientadas a objetos no desenvolvimento de aplicaes de software. A modelagem dos dados orientados a objetos possuem caractersticas que diferem muito da forma tradicional das modelagens de dados que so utilizadas pelos bancos de dados relacionais, apesar de possuir algumas semelhanas,

especialmente, relativas cardinalidade das relaes entre as entidades. Os bancos de dados orientados a objetos possuem conceitos fortemente ligados a programao orientada a objetos: abstrao, objeto, estrutura de objeto, classes, herana, tipos de herana, polimorfismo e encapsulamento.

O conceito de abstrao refere-se ao processo ou resultado de generalizao por restrio do contedo da informao de uma idia observvel, usualmente para reter apenas informaes que so relevantes para uma finalidade particular, ou seja, a capacidade de determinar o problema de forma geral, dando valor apenas aos aspectos importantes e ignorando os detalhes (Ishiki, 2004 apud Gualberto). Como exemplo de abstrao, pode-se citar uma classe Mundo que possui vrias subclasses como continentes, pases, estados, cidades, bairros, avenidas, ruas e cada subclasse contm objetos como Amrica, Brasil, Rio Grande do Sul, Porto Alegre, So Joo, Assis Brasil, Madri. Segundo Chaudri e Zicari (2001) apud Boscarioli et al. (2010) uma base de dados orientada a objetos apenas uma coleo de objetos, enquanto em um sistema orientado a objetos, cada objeto representa uma entidade do mundo real. O objeto possui um estado que depende do valor das suas propriedades, e o comportamento que determinado por operaes que podem ser executadas, tendo a possibilidade de alterar o estado do objeto. No banco de dados orientados a objetos os estados so atributos do prprio objeto ou relaes com outros objetos, enquanto isso, o comportamento est representado por mtodos formado por uma assinatura nica dentro do objeto e uma implementao que responsvel pela execuo da operao. Uma das propriedades mais significantes para os objetos sua identidade. Para isso, existe um identificador nico fornecido pelo Sistema de Banco de Dados Orientados a Objetos que armazenado no banco de dados. Essa

identidade na maioria das vezes implementada pelo identificador de objetos nico gerado pelo sistema, ou OID (Object Identifier). Na figura 1 podem ser vistos exemplos de OID.

Figura 1. Referncias das OIDs nos Objetos Pessoa e Automvel Fonte: Mello (2010)

As propriedades mais importantes da identidade de objeto so: ser inaltervel, ou seja, o valor do OID no deve ser modificado em nenhuma circunstncia e, a outra, o identificador deve ser utilizado apenas uma vez, mesmo que o objeto seja removido do banco de dados seu OID no deve ser utilizado por outro objeto. O OID tem como objetivo reconhecer o objeto e poderia ser comparado com a chave primria do modelo relacional. O objeto representado como uma tripla (i,c,v), onde o i o identificador nico de objetos, o c um construtor, ou seja, que tipo de valor vai ser definido nas estruturas de dados para um esquema de BDOO, como por exemplo: atom (atmico), a tuple (tupla), o set (conjunto), a list, a bag e o array. Finalmente, o v que o valor corrente. Ento o objeto suporta somente aquilo que determinado para ele, se o objeto receber valores atmicos bsicos, como inteiros, nmeros reais, cadeias de caracteres ou quaisquer outros tipos, ele s aceitar esses valores atmicos. Os construtores dos tipos set, list, array, bag so caracterizados como tipos empilhados ou colees, ou seja, o estado de um objeto ser uma coleo de objetos podendo ser ordenados (set, bag) ou no (list, array). As principais

diferenas dos construtores do tipo

set que os elementos devem ser

distintos, no bag pode haver elementos duplicados, no list s aceita nmeros arbitrrios de elementos e no array h um tamanho mximo de elementos (Elmasri e Navathe, 2005). Na figura 2 so apresentados exemplos de objetos.

Obj eto1 Objeto2 Objeto3 Objeto4 Objeto5 Objeto6 = = = = = =

(oid1, atom, 'Anderson') (oid2, atom, 'William') (oid3, atom, 'Adriana') (oid4, atom, 1000) (oid5, atom, '29-05-1985') (oid6, set, {oid1, oid2,oid3})

(oid7, tuple, <NOME:oid2, DATA_NASC:oid5>)

Objeto7 =

Figura

2.

Objetos

definidos

como

uma

tripla

(OID,construtor de tipo, estado)

Os objetos complexos podem ser de dois tipos: estruturados e no estruturados. Os estruturados so formados por componentes definidos pela repetida aplicao dos construtores de tipo disponveis. Os no estruturados so tipos de dados que requerem grande quantidade de memria para armazenamento, como imagens ou objetos textuais, tais como, documentos (Galante, Moreira e Brando, 2010). Ento, classe um conjunto de objetos de um mesmo tipo que so formados por atributos, relacionamentos, operaes e so agrupados (Ishiki, 2004). Um objeto

10

constitudo por atributos e mtodos que so implementados pelas classes. No exemplo da figura 3 pode ser visto a classe Pessoa que possui os seguintes atributos: Nome, Endereo, Telefone, CEP, sendo que estes so seus dados. J nas operaes h os mtodos: CadastrarPes, SalvarPes, DeletarPes, PesquisarPes que possuem, respectivamente, as funes de cadastrar, atualizar, deletar e pesquisar alguma pessoa.

Figura 3. Classe Pessoa

Uma classe pode ser estendida por outra classe, processo conhecido como especializao. J a herana um mecanismo da orientao a objeto que permite criar novas classes a partir de outras j existentes, aproveitando-se das caractersticas existentes (propriedades estruturais e comportamento) na classe a ser estendida (Ricarte, 1998). O grande propsito deste mecanismo o reuso e o reaproveitamento do cdigo existente. Na figura 4 as subclasses PessoaFsica e PessoaJurdica estendem todas as funcionalidades Pessoa, porque o (atributos e operaes) da superclasse

nico diferencial so os atributos CPF e CNPJ dos demais

necessrios.

11

Figura 4. Subclasses estendendo a Superclasse Pessoa

De acordo com Elmasri e Navathe (2005), a herana pode ser classificada em dois tipos:

Herana funcionalidades

Mltipla:

possibilidade

de

compartilhamento

das

(atributos e mtodos) de duas ou mais classes em uma subclasse;

Herana

Seletiva:

Ocorre

quando

uma

subclasse

herda

somente algumas funcionalidades (atributos e mtodos) de uma nica classe, no herdando de outras.

Polimorfismo, tambm

conhecido

como

sobrecarga

de

operador e

formalmente quer dizer vrias formas, ou seja, o mecanismo que permite expressar um objeto de vrias maneiras diferentes ao receber mensagens, tendo comportamento constante (Ricarte, 1998). obtido com ajuda da herana nas

classes e na reescrita (overriding1) dos mtodos das superclasses nas suas subclasses.

Supondo

duas

subclasses

de

uma

superclasse

que

podem

ter

implementaes diferentes de um mesmo mtodo levando os objetos a um comportamento diferente e no omitindo seu tipo de criao. No exemplo da figura 6

12

pode-se perceber que a partir da classe Pessoa, a criao das classes PessoaFsica e PessoaJurdica o comportamento (mtodo) ValidarDocumento comuns s trs classes. Quando o programa estiver em execuo, se o mtodo ValidarDocumento for invocado na classe Pessoa, as funcionalidades de cada uma das classes sero utilizadas com o propsito do efeito desejado, independente da classe, mas pelo tipo da instncia de objeto.

Overriding: um recurso da linguagem orientada a objetos que permite que uma subclasse ou classe filha fornea uma implementao especfica de um mtodo que j fornecido por uma de suas superclasses ou classes pai.

Figura 5. Classes PessoaFsica e PessoaJurdica especializadas em Pessoa

Em banco de dados orientados a objetos se diz que um objeto est encapsulado quando seu estado oculto ao usurio e o objeto pode ser pesquisado ou alterado somente atravs das operaes a ele denominadas. Este conceito est fortemente ligado a abstrao de dados. Com este conceito seria possvel qualificar o atributo Telefone como private que um modo de encapsulamento mais restritivo da classe Pessoa, representada na figura 5, e assim as classes PessoaFsica e PessoaJurdica no teriam acesso direto a esse atributo.

Com as principais caractersticas dos bancos de dados orientados a objetos

13

citadas nesta seo para uma orientao bsica no desenvolvimento de softwares, na prxima seo sero abordados alguns BDOO.

3.2 Aplicao e Mecanismo de Funcionamento do Banco de Dados Orientado a Objeto

Os Bancos de Dados Orientados a Objetos possuem uma caracterstica importante que o armazenamento de objetos e suas operaes de maneira a fornecer uma ligao transparente com a aplicao, sem a necessidade de uma camada de traduo dos dados, como ocorre com os Bancos de Dados Relacionais. Atualmente, existem vrios softwares de Bancos de Dados Orientados a Objetos e sua procura crescente por facilitar a integrao a esse paradigma. No entanto, cada software apresenta caractersticas prprias e o mais importante saber qual modelo adequado para cada aplicao. A seguir alguns exemplos disponveis no mercado.

Db4objets

O Db4o (database for objects) um banco de objetos de cdigo aberto, nativo para as linguagens Java e .Net, distribudo como uma biblioteca .jar ou .dll, respectivamente. desenvolvido e suportado pela empresa Versant e encontrado no site http://www.db4o.com/. Db4Objects livre quando licenciado sob General Public License (GPL). No entanto, para utiliz-lo em um produto comercial e/ou receber apoio profissional deve-se possuir uma licena comercial (Db4O, 2010). Para armazenar e recuperar qualquer objeto de aplicao com o Db4o precisa-se de apenas uma linha de cdigo no importando o quo complexa a estrutura deste objeto. Com sua utilizao possvel eliminar ferramentas e cdigos para o mapeamento objeto-relacional ganhando tempo e reduo de

custos para o desenvolvimento de softwares ao construir aplicaes sem vinculaes com o armazenamento de dados, benefcios do paradigma orientado a objetos e a reutilizao de componentes de software. Com um banco de dados Db4o os objetos do esquema da aplicao o prprio esquema de banco de dados, sem mapeamento necessrio, ou seja, bem

14

diferente do Sistema de Gerenciamento de Banco de Dados Relacional (RDBMS), em que os dados e suas relaes so armazenados na forma de tabelas, conforme pode ser visto na figura 6.

Figura 6. Armazenamento dos dados RDBMS X Db4o

Fonte: DB4O No Mapping Complexity (2010)

O Db4o disponibiliza uma ferramenta de navegao de objetos para a base de dados que o Object Management Enterprise (OME), que est disponvel como um plug-in para as ferramentas Eclipse e Visual Studio MS 2005/2008. O OME permite navegar nas classes e objetos do banco de dados, conectar a um servidor de banco de dados, criar consultas usando drag & drop2 e analisar as estatsticas do banco de dados. Alm disso, essa interface grfica fornece algumas funes administrativas, tais como indexao, desfragmentao e backup. O OME inicialmente foi sugerido para usurios com licena comercial, mas atualmente includo na distribuio livre e seu cdigo fonte disponibilizado ao pblico no repositrio Subversion (SVN) do Db4o.

GemStone/S

O GemStone/S um Servidor de Objetos ou Sistema Gerenciador de Banco de Dados Orientados a Objetos (SGBDOO) comercial desenvolvido pela empresa

15

GemStone System e encontrado em http://www.gemstone.com/. A idia inicial do sistema era de transformar a linguagem Smalltalk em uma linguagem de banco de dados, de onde surgiu a linguagem de declarao e manipulao de dados, a linguagem OPAL (GemStone, 2001). Drag and Drop: a ao de clicar em um objeto virtual e arrast-lo a uma posio diferente ou sobre outro objeto virtual. Pode ser usado para invocar diversos tipos de aes, ou criar vrios tipos de associaes entre dois objetos abstratos. Assim, embora o GemStone/S seja baseado em Smalltalk, ele possui alguns produtos para utilizao com outras linguagens. Um deles o GemBuilder para Java, que fornece uma interface aos clientes para ferramentas de implementao em Java, os clientes podem criar aplicaes baseadas em seu ambiente de desenvolvimento preferido. O sistema composto basicamente por dois processos principais: o Gem e o Stone, que representado na figura 7.

Sesso

Sesso

G em

S tone

Figura 7. Arquitetura do Sistema GemStone

O Gem oferece compilao de programas, executa os mtodos, faz avaliao de consultas, verifica autorizao de usurios, e oferece um conjunto pr-definido de classes e mtodos para uso das aplicaes. Quando o Gem

16

atua no servidor ele tambm o mdulo encarregado por controlar conexes com as sesses dos clientes, recebendo bytecodes3 e os enviando para um

submdulo interpretador. O Stone responsvel pela alocao de identificadores de objetos OID, gerenciamento de objetos persistentes, controle de concorrncia, armazenamento, transaes, autorizao, replicao e servios de recuperao. O Stone em geral instalado e executado no servidor, enquanto o Gem pode ser executado tanto no servidor como em uma estao cliente (GemStone, 2001).

ObjetcDB

O ObjectDB um Sistema Gerenciador de Banco de Dados Orientados a Objeto (Object Date Base Management System ODBMS) desenvolvido por uma empresa privada e encontrado em http://www.objectdb.com/. Ele inteiramente escrito em Java com possibilidade de executar em qualquer ambiente que suporta essa linguagem, podendo facilmente mover o aplicativo para plataformas, como: Windows, Unix, Macintosh, e entre outras. Possui compatibilidade com o Java Date Objects (JDO) que uma API baseada em Java de modelo de abstrao e interface padro de persistncia desenvolvida sob os auspcios do Java Community Process, portanto os aplicativos que usam ObjectDB no esto vinculados a ele, podendo ser alocado para outros bancos de dados compatveis com o JDO (ObjectDB, 2010).

Bytecodes: So Cdigos em bytes. o resultado de um processo semelhante ao dos compiladores de cdigo-fonte que no imediatamente executvel, assim sendo, um estgio intermdio entre o cdigo- fonte e a aplicao final. O ObjectDB foi projetado para manipular bases de dados de diversos tamanhos, desde alguns KBs at centenas de GBs, tanto em modo de banco de dados incorporado quanto no modo cliente/servidor. O ObjectDB para Java/JDO est disponvel em trs edies: Free, Embedded e Server. A verso Free especial para uso pessoal e no-comercial com base na edio de banco de dados integrados, mas possui algumas restries, uma delas a limitao de armazenamento com mximo de 5.000 objetos de dados por arquivo. A verso Embedded, limitada com banco de dados incorporado no

17

modo operacional. A verso Server mais avanada e suporta todas as funcionalidades do ObjectDB, tanto no banco de dados incorporado modo

operacional, bem como o modo de operao cliente- servidor (OBJECTDB, 2010). O ObjectDB para Java/JDO projetado especialmente para aplicaes web em Java, cada uma das edies citadas acima pode ser facilmente integrada em qualquer aplicao web JSP/Servlet.

Jasmine

O Jasmine um banco de dados orientado a objeto puro e de licena proprietria. Ele se prope a oferecer alta conectividade com a WEB e suporte a linguagem Java, permitindo o desenvolvimento de aplicaes utilizando as

interfaces embutidas no prprio banco de dados. Permite-se, ainda, desenvolver aplicaes em Visual Basic usando Active/X, em HTML (HyperText Markup Language) usando as ferramentas de conectividade disponveis no pacote Jasmine Studio, em C e C++ usando Application Programming Interface (API) especficas (Castle Software Australia, 2010).

Ainda de acordo com Castle Software Austrlia (2010), o Jasmine apresenta como principais caractersticas a facilidade de manipulao, os ganhos de desempenho e a flexibilidade no desenvolvimento decorrente do Jasmine Studio. Este disponibiliza, entre outras ferramentas: Ambiente de desenvolvimento visual que permite a usurios no programadores desenvolverem aplicaes; Gerenciador de aplicaes; Compilador; Debugador; Gerador de arquivos executveis para distribuio; Publicador de aplicaes na WEB. Na figura 8 esto representados os componentes do Jasmine.

18

Figura 8. Representao dos Componentes do Banco de Dados Jasmine

Fonte: Pereira e Bohnert (2010)

3.3 Diferena entre Banco de Dados Orientado a Objetos e Banco de dados Relacional Um banco de dados relacional um banco de dados onde as informaes so armazenadas na forma de registros em tabelas, cada registro contendo uma chave primria nica que o identifica dentro da tabela, e cada tabela contendo um nome nico que a identifica no banco. Em um banco de dados orientado a objetos, os dados so guardados como propriedades de objetos, e s podem ser manipulados pelos mtodos definidos na classe que define o objeto A figura 9 apresenta uma comparao entre as principais diferenas dos bancos dados relacionais com os bancos de dados orientados a objetos.

19

Banco de Dados Relacional


Tabelas (Entidades) Query's (Consultas, etc) SQL Ansi

Banco de Dados Orientados a Objetos


Objetos Native Querys Mtodos, Construtores

Figura 9. Comparao Banco de Dados Relacional X Banco de Dados Orientados a Objetos Fonte: Adaptado de Cardoso, Carlin, Rosario (2010)

4 Mapeamento Objeto Relacional ORM (Object Relational Mapper) Como existem diferenas conceituais entre o modelo relacional usados pelos bancos de dados e a orientao a objetos, acabou surgindo a tcnica de mapeamento objeto-relacional (ORM). Esta tcnica sugere como devemos persistir o estado de um objeto (atributos, relacionamentos e herana) em tabelas de banco de dados relacional (como Oracle, SQL Server, DB2, MySQL, etc). Diversas plataformas e linguagens promovem esta tcnica atravs de frameworks. Na plataforma Java existe o consagrado framework Hibernate e agora um padro chamado JPA. J na plataforma .NET tambm podemos encontrar o NHibernate (um porte do Hibernate para .NET), o Microsoft s ObjectSpaces e LINQ, dentre outros.

4.1 Desenvolvimento utilizando o Modelo Orientado a Objetos com um Banco de Dados Relacional Nos ltimos anos, o paradigma de orientao a objetos vem se desenvolvendo na rea de programao. Vrias experincias tm mostrado que esse paradigma aumenta a produtividade dos programadores a modularidade dos programas. Na rea de bancos de dados, sabe-se que os modelos de dados clssicos, como por exemplo o modelo relacional, no so apropriados para descrever e manipular os dados das chamadas "novas aplicaes", tais como projeto assistido por computador (CAD), manufatura de produtos (CAM), produo de software (CASE), automao de escritrios (OIS), aplicaes mdicas e cientficas, representao do conhecimento para aplicaes de inteligncia artificial, etc [The90]. Os dados dessas aplicaes so muito complexos e evolutivos, sendo necessria a

20

modelagem no somente de sua estrutura, mas tambm de seu comportamento. Para compensar estas deficincias, vrios modelos de dados tem sido propostos. Primeiramente, os estudos na rea foram dirigidos para os modelos semnticos e extenses do modelo relacional. Mais recentemente, surgiram modelos que procuram enfatizar os aspectos comportamentais dos objetos que manipulam, sendo baseados principalmente em conceitos oriundos da programao orientada a objetos. Isso se deve ao fato de que a orientao a objetos auxilia a lidar com a complexidade nas mais diferentes aplicaes. Esses modelos so denominados modelos de dados orientados a objetos [Nav92]. Os modelos de dados orientados s objetos so mais expressivos e flexveis que o modelo relacional. O modelo de dados relacional foi criado para permitir a representao de uma grande variedade de problemas usando um pequeno conjunto de conceitos simples. Por outro lado, os modelos orientados a objetos foram projetados para a criao e representao de estruturas bem mais complexas de uma maneira coerente e uniforme [SZ87]. Apesar de inmeras vantagens encontradas ao se utilizar o paradigma de orientao a objetos, ainda no existem SGBDs OO comercialmente disponveis para aplicaes de grande porte. Os SGBDs relacionais ainda representam o estado da arte na tecnologia tradicional de bancos de dados e so os mais estudados na literatura. Suas maiores vantagens so a simplicidade e a portabilidade entre implementaes. Esses sistemas continuam a dominar o mercado , sendo utilizados nas mais diversas aplicaes [Sac94]. Entretanto, os conceitos de orientao a objetos podem ser utilizados como mecanismos de abstrao para o projeto de bancos de dados relacionais. A modelagem orientada a objetos, por utilizar conceitos mais claros e naturais, permite produzir bancos de dados relacionais mais adequados s aplicaes do mundo real, evitando os problemas de normalizao freqentemente associados ao projeto relacional [PBRV90]. Alm disso, a modelagem orientada a objetos aumenta a integrao entre os dados e as aplicaes [BPR88]. Dessa forma, uma abordagem orientada a objetos para o projeto de lgico de bancos de dados relacionais permite que as aplicaes sejam projetadas de forma integrada, em que dados e operaes podem ser projetados ao mesmo tempo. Com o crescimento do mercado, as linguagens orientadas a objetos

21

comearam a dar maior enfoque em um novo paradigma, a anlise, projeto e codificao de sistemas. claro que os bancos de dados no poderiam ficar imunes esse novo modo de encarar o desenvolvimento de sistemas. Houve, entretanto, um desenvolvimento mais rpido nas linguagens orientadas a objetos (OO) que nos Sistemas Gerenciadores de Bancos de Dados Orientados a Objetos (SGBD OO), o que deixou os desenvolvedores e administradores de BD numa situao curiosa: mesmo querendo adotar a orientao a objetos, eles tm que parar na hora de manipular seus dados. Linguagens visuais como o JAVA, por exemplo, embora sejam orientadas o objetos em sua essncia, acessam os bancos de dados de maneira convencional, ou seja, no orientada a objetos e usando SQL. Com isso, um mesmo programa tem uma parte OO e uma parte estruturada. Alguns autores dizem que quando linguagens OO utilizam SQL embutido para acesso a dados remotos em um SGBD, as facilidades e vantagens da orientao a objetos presentes nessas linguagens no so exploradas totalmente. Outro ponto importante, saber se a aplicao da OO no armazenamento esttico de dados ser to mais eficiente para dados convencionais (strings e nmeros) como parecem ser para dados especiais como som, imagens e textos desestruturados. Caso ela no represente um grande avano em relao aos SGBDs relacionais tambm nessa rea, haver sempre a possibilidade de termos um grande uso de SGBDs OO para armazenamento de dados multimdia e os velhos e bons SGBDs relacionais para dados convencionais, o que no representaria pouco. Enquanto o armazenamento de dados OO no se tornar comercialmente disponvel apenas, a opo mais adequada desenvolver o sistema utilizando OO na anlise e no projeto, e posteriormente armazenar os dados relacionalmente.

4.2 Definio de ORM e Sua Utilizao O termo Mapeamento Objeto Relacional refere-se a tcnica de mapear os registro do Banco de Dados em objetos e persistir as informaes contidas nos objeto em forma de linhas e colunas. Como o prprio nome diz Mapeamento Objeto / Relacional, responsvel por mapear classes e atributos do modelo orientado a objeto para tabelas e colunas

22

do banco de dados. Existem vrias formas de fazer esse mapeamento. Alguns frameworks utilizam a linguagem XML, outros nos obrigam a implementar alguma Interface ou trabalhar com os Atributos do .NET, mas o objetivo sempre o mesmo: Permitir que o framework consiga gerar os comandos SQL dinamicamente. Outra caracterstica deste modelo a independncia do banco de dados. Devido gerao de comandos dinmicos, o framework pode analisar qual banco de dados a aplicao est acessando e gerar os comandos no dialeto especfico do banco de dados, ou seja, possvel mudar o banco de dados da aplicao apenas alterando um arquivo de configurao.

4.3 Ferramentas de Mapeamento Objecto-Relacional Ferramentas de mapeamento Objecto-Relacional (do ingls ObjectRelational Mapping Tools ou ORM tools) so ferramentas de middleware usadas para criar uma camada de abstraco orientada a objectos, para o programador, enquanto lidam com os dados num formato relacional, na base de dados. As ferramentas ORM fornecem, assim, uma camada de abstraco que permite ao programador abstrair-se do formato fsico em que os dados esto armazenados. A gesto a persistncia dos dados delegada na ferramenta de ORM, permitindo ao programador trabalhar ao nvel do cdigo com objectos que instanciam o modelo de domnio, desenvolvido na fase de modelao do software, em vez de ter que usar estruturas com o formato das tabelas da base de dados. As ferramentas de mapeamento objecto-relacional estabelecem uma ligao bidirecional entre os objectos no cdigo e os dados na base de dados relacional. H diversas ferramentas ORM, tanto comerciais como livres), de entre as quais a mais usada no mundo Java decerto o Hibernate, e no mundo .Net, o NHibernate e o ADO.Net Entity Framework.

4.3.1 Mapeando objetos para tabelas Para permitir a correta persistncia de objetos em um banco de dados relacional, algum acordo deve ser feito no tocante forma como os dados sero

23

armazenados. Existem diversas tcnicas que permitem o mapeamento de conjuntos de objetos, cada qual com suas vantagens e desvantagens sobre as demais. Em geral, uma Camada de Persistncia implementa uma destas tcnicas, de forma que o desenvolvedor de software, ao escolher o mecanismo de persistncia com o qual trabalhar, sabe como deve organizar as tabelas em seu banco de dados para suportar o esquema de objetos desejado. No decorrer deste artigo, detalhamos como feito o mapeamento de cada um dos elementos de um objeto: seus atributos, relacionamentos e classes descendentes (herana).

4.3.2 Mapeando atributos Ao transpor-se um objeto para uma tabela relacional, os atributos do mesmo so mapeados em colunas da tabela. Este processo de mapeamento deve levar em considerao fatores como a tipagem dos dados (alguns SGBDs podem no suportar tipos binrios longos, por exemplo) e o comprimento mximo dos campos (no caso de nmeros e strings). Tambm importante lembrar que, em diversos casos, atributos de um objeto no devem ter obrigatoriamente uma coluna em uma tabela que os referencie. Como exemplo, podemos citar o valor total de um pedido: este dado poderia ser armazenado no objeto para fins de consulta, mas mant-lo no banco de dados talvez no seja uma idia to interessante, por tratar-se de um valor que pode ser obtido atravs de consultas. Alm disso, existem casos onde um atributo pode ser mapeado para diversas colunas (exemplos incluem endereos completos, nome dividido em 'primeiro nome' e 'sobrenome' no banco de dados) ou vrios atributos podem ser mapeados para uma mesma coluna (prefixo e nmero de telefone, por exemplo). As implementaes de Camadas de Persistncia provm, em alguns casos, suporte a este tipo de situao.

4.3.3 Mapeamento de classes em tabelas O mapeamento de estruturas de classes em tabelas de uma base de dados relacional nem sempre um processo simples: enquanto alguns acham interessante a adoo de "tabeles" (isto , tabelas no-normalizadas agrupando dados de

24

diversas entidades) como repositrio para os dados, outros preferem ater-se s regras propostas pelas teorias de normalizao de bancos de dados relacionais. As trs tcnicas de mapeamento de objetos mais comumente implementadas (inclusive em Camadas de Persistncia) so detalhadas a seguir. comum a adoo de uma destas tcnicas, mesmo quando nenhum tipo de mecanismo de persistncia automtico adotado no desenvolvimento. . 4.3.4 Mapeamento de uma tabela por hierarquia Segundo esta estratgia, toda a hierarquia de classes deve ser representada por uma mesma tabela no banco de dados: uma coluna que identifique o tipo do objeto serve para identificar a classe do objeto representado por cada linha na tabela, quando nenhum outro modo de identificao vivel. As desvantagens desta estratgia so evidentes: a ausncia de normalizao dos dados fere as regras comuns da teoria de modelagem de dados alm disso, para hierarquias de classes com muitas especializaes, a proliferao de campos com valores nulos na maioria das linhas da tabela se torna tambm um problema potencial.

4.3.5 Mapeamento de uma tabela por classe concreta Nesta estratgia, teremos uma tabela no banco de dados para cada classe concreta presente em nosso sistema. A tabela identifica a classe de todos os elementos contidos na mesma, tornando desnecessrio o mecanismo de Object Type adotado na estratgia anterior. A estratgia de gerao de uma tabela para cada classe concreta leva redundncia de dados: quaisquer atributos definidos em uma superclasse abstrata na hierarquia devem ser criados em todas as tabelas que representam subclasses da mesma. Alm disso, mudar o tipo (especializar ou generalizar) um objeto torna-se um problema, j que necessrio transferir todos os seus dados de uma tabela para outra no ato da atualizao.

25

4.3.6 Lista de Ferramentas de mapeamento objeto-relacional

C++

Figura 9. Representao de Ferramenta para C++

26

Flex

Athena-Quadro , de cdigo aberto Flex ORM, suporte nativo

para multitenancy Java

ActiveJDBC - implementao Java do padro de registro ativo ,

inspirado pelo Ruby on Rails


Cayenne , Apache , de cdigo aberto para Java Kodo , a implementao comercial de ambos Java Data

Objects e Java Persistence API


Torque , um mapeador objeto-relacional para Java Athena-Quadro , open source Java ORM, suporte nativo para

multitenancy SaaS e comunicao remota para Adobe Flex

Carbonado , framework de cdigo aberto, apoiado por Berkeley

DB e JDBC

Ebean , framework ORM open source EclipseLink , Eclipse plataforma de persistncia Empresa Objects Framework , Mac OS X / Java, parte da

Apple WebObjects

Hibernate , framework ORM open source, amplamente utilizado Java Data Objects (JDO) Rpido Mapping Relao Objeto Java (Fjorm) MyBatis , livre de cdigo aberto, iBATIS anteriormente

denominada

Java Object Oriented Consultando (jOOQ) Java Persistence API (JPA) DataNucleus , open source JDO e implementao

JPA. Anteriormente conhecido como JPOX

Ponte objeto relacional ( Apache OJB), um mapeador objeto-

relacional para Java, a partir de 2011/01/16, Apache ObJectRelationalBridge foi aposentado


OpenJPA , Apache , open source, suporta JPA API ORMLite quadro, leve open source suporte JDBC e Android TopLink da Oracle QuickDB ORM , framework ORM open source (GNU LGPL)

27

EJB , Enterprise Java Beans

MonoTouch / iOS

DatabaseObjects . NET, open source

. NET

ADO.NET Entity Framework , includo no. NET Framework 3.5

SP1 e superior

Uma biblioteca de componentes de base Foundation , livre ou

comercial

Negcios Logic Toolkit , open source Devart LinqConnect, soluo ORM comercial para a

Oracle , MySQL , PostgreSQL e SQLite


Castle ActiveRecord , ActiveRecord para. NET, open source DatabaseObjects . NET, open source DataObjects.NET , comercial Dapper , open source ECO uso comercial, mas gratuito para at 12 classes EntitySpaces , comercial iBATIS , livre de cdigo aberto, mantida pela ASF mas agora

inativo.

LINQ to SQL , includo no. NET Framework 3.5 LLBLGen Pro , comercial Neo , de cdigo aberto, mas agora inativo. NHibernate , open source nhydrate , open source Persistor.NET , livre ou comercial Objetos rpidas , livres ou comerciais Signum-Quadro , open source SubSonic , open source

Object Pascal (Delphi)

Bold para Delphi Provavelmente o quadro mais maduro para

Delphi, mas no est disponvel devido a Embarcadero ajudou.

ECO por objetos capazes, disponvel para Delphi 2007 e Delphi

Prism 2010 Objective-C, Cocoa

28

Objetos da empresa , um dos primeiros comerciais ou mappers,

disponvel como parte do WebObjects

Dados Bsicos , estrutura de gerenciamento grfico de objeto

com vrias lojas persistentes, navios com Mac OS X e iOS Perl

DBIx :: Class

PHP

CakePHP , e framework ORM para PHP 5, open source

(escalares, arrays, objetos), com base no banco de dados de introspeco, nenhuma classe estendendo

CodeIgniter ,

estrutura

que

inclui

uma

implementao

ActiveRecord

Doutrina , ORM cdigo aberto para PHP 5.2.3, 5.3.X. Software

livre (GNU LGPL)

FuelPHP , ORM e estrutura para PHP 5.3, lanado sob a licena

MIT. Com base no padro de ActiveRecord.

Propel , ORM e consulta de conjunto de ferramentas para PHP

5, inspirado pelo Apache Torque, software livre, MIT


Qcodo , ORM e estrutura para PHP 5, open source Reiya, ORM cdigo aberto para PHP 5.4 +. Implementando

o padro de mapa de identidade . (Apache v2.0)

Rochas , ORM cdigo aberto para PHP 5.1 plus, gratuito para

uso no-comercial, GPL

Redbean , camada ORM para PHP 5, cria e mantm tabelas on

the fly, open source, BSD

Torpor , ORM cdigo aberto para PHP 5.1 plus, software livre,

MIT, banco de dados e sistema operacional agnstico

Yii , e framework ORM para PHP 5, lanado sob a licena

BSD. Com base no padro de ActiveRecord.

Zend Framework , quadro que inclui um gateway de dados de

tabela e de linha implementaes de gateway de dados.

TORM , um ORM simples baseado em ActiveRecord.

Python

Django , ORM includo no quadro Django, open source

29

SQLAlchemy , open source SQLObject , open source Tempestade , de cdigo aberto (LGPL 2.1), desenvolvido

em Canonical Ltd.

Tryton , open source web2py , as instalaes de um ORM so tratados pela DAL no

web2py, open source Rubi


ActiveRecord , parte do Ruby on Rails , open source Datamapper iBATIS , livre de cdigo aberto

Smalltalk

TopLink / Smalltalk , pela Oracle, o predecessor de Smalltalk a

verso Java do TopLink Visual Basic 6.0

DatabaseObjects , open source

4.4 Vantagens x Desvantagens na Utilizao de Uma Ferramenta ORM Vantagens

utilizao

do

NHibernate

trs

diversas

vantagens

durante

desenvolvimento de um projeto. Por ser um port do NHibernate, o framework apresenta certa maturidade, proporcionando um projeto com um maior nvel de confiabilidade. Alm disso, o NHibernate consiste em um framework Open-Source, resultando em uma economia de custos no desenvolvimento do projeto. Outra vantagem do NHibernate possuir um suporte ativo, uma boa documentao e diversos fruns sobre o tema. O NHibernate oferece algumas facilidades em relao a mudanas, tanto no mapeamento quanto no banco de dados, sendo possvel fazer com que o NHibernate crie ou atualize o banco de dados para coincidir com o modelo na

30

aplicao.

Desvantagens Um dos pontos do NHibernate que podem ser considerados negativos a

alta curva de aprendizado devido a complexidade que o framework apresenta. De fato, o que acontece que existem muitas configuraes e otimizaes que so desconhecidas para a maioria dos profissionais que o utilizam, requerendo mais estudo e dedicao de quem ir utiliz-la. Outra desvantagem o trabalho em que se tem para gerar todos os arquivos XML necessrio para a realizao da persistncia.

31

Concluso Os BDOO surgiram para oferecer uma alternativa de suporte s operaes onde os bancos de dados relacionais no eram capazes ou eficientes. Cabe ressaltar o notvel crescimento do paradigma de orientao a objeto nas novas aplicaes computacionais, motivo ligado diretamente ao crescimento da utilizao dos BDOOs. Assim, muitas vantagens so oferecidas por esse modelo de armazenamento, como a persistncia de tipos de dados complexos e a representao dos dados e das operaes de um objeto que tambm so persistidos. Podemos observar que existe vrios paradigmas no que se diz respeito a ORM (Object Relational Mapper), h vrias discusses sobre suas vantagens e desvantagens, onde cabe a ns desenvolvedores tomar proveito de cada ferramenta que possa nos auxiliar na melhor busca do resultado.

32

Referncias Banco de Dados Orientados a Objetos. Disponvel em:

<http://www.faculdadedombosco.edu.br/downloadAnexo.php?type=noticia&id=131 > Acessado em: 30/09/13

CORBELLINI, Anderson; OLIVEIRA, William Hart; SCHERER, Adriana Paula Zamin. KURIKE, Rafael Zolet. Mapeamento de Modelos de dados Orientados a Objetos para Modelos Relacionais. Disponvel em: < http://www.apinfo.com/artigo50.htm> Acessado em: 07/10/13.

LEMOS,

Alberto.

Entendendo Disponvel

os

conceitos em: <

sobre

mapeamento http://www.dicas-

objeto/relacional.

l.com.br/freedb/freedb_20100315.php > Acessado: 02/10/13.

PINHEIRO, Ramon Silva; SOUZA, Danilo Santos; VASCONCELOS, Rafael Oliveira; SILVA, Fbio Soares. Comparativo entre Banco de Dados Orientado a Objetos (BDOO) e Bancos de Dados Objeto Relacional (BDOR). Disponvel em: <http://sgclab.ic.uff.br/sgclab/index.php/publications/category/1papers?download=2:s tudy-of-database-reliability-and-performance > Acessado: 26/09/13

RANIERI, Brbara. Veja o que ORM e os frameworks disponveis. Disponvel em:< http://www.princiweb.com.br/blog/programacao/aspnet/veja-o-que-e-orm-e-osframeworks-disponiveis-para-net.html> Acessado em: 10/10/13

Wikipdia, a enciclopdia livre, Lista de software de mapeamento objeto-relacional, Disponvel em: < http://en.wikipedia.org/wiki/List_of_object-

relational_mapping_software> Acessado em: 10/10/13.

Você também pode gostar