marcos de andrade vilalva - produção textual interdiciplinar - individual - 4º semestre

Upload: marcos-vilalva

Post on 14-Apr-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    1/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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    2/32

    MARCOS DE ANDRADE VILALVA

    PORTFLIO INDIVIDUAL 4 SEMESTRE

    Disseminao de Banco de Dados Orientada a Objetos e Mapeamento

    Objeto Relacional

    Trabalho apresentado s disciplinas:

    Modelagem Orientada a Objeto, Redes de

    Computadores, Desenvolvimento Orientado a Objeto

    da Universidade Norte do Paran - UNOPAR.

    Prof.(s). Paulo Kiyoshi NishitaniPolyanna P. Gomes FabrisMarcio Chiaveli

    ARAATUBA

    2013

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    3/32

    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 aObjeto ........................................................................................................................ 13

    3.3 Diferena entre Banco de Dados Orientado a Objetos e Banco de dadosRelacional.................................................................................................................. 18

    4 Mapeamento Objeto Relacional ORM (Object Relational Mapper) ...................... 19

    4.1 Desenvolvimento utilizando o Modelo Orientado a Objetos com um Banco deDados 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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    4/32

    4

    1 IntroduoDesde 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.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    5/32

    5

    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.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    6/32

    6

    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 namodelagem 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 maisprxima 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).

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    7/32

    7

    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 quepossui 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 ocomportamento 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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    8/32

    8

    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 nasestruturas de dados para um esquema de BDOO, como por exemplo: atom

    (atmico), a tuple (tupla), o set(conjunto), a list, a bage 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 deobjetos podendo ser ordenados (set, bag) ou no (list, array). As principais

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    9/32

    9

    (oid1, atom, 'Anderson')

    (oid2, atom, 'William')

    (oid3, atom, 'Adriana')

    (oid4, atom, 1000)(oid5, atom, '29-05-1985')

    (oid6, set, {oid1, oid2,oid3})

    (oid7, tuple, )

    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 =

    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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    10/32

    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 (atributos e operaes) da superclasse

    Pessoa, porque o nico diferencial so os atributos CPF e CNPJ dos demais

    necessrios.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    11/32

    11

    Figura 4. Subclasses estendendo a Superclasse Pessoa

    De acordo com Elmasri e Navathe (2005), a herana pode ser

    classificada em dois tipos:

    Herana Mltipla: a possibilidade de compartilhamento das

    funcionalidades

    (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 permiteexpressar 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 umcomportamento diferente e no omitindo seu tipo de criao. No exemplo da figura 6

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    12/32

    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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    13/32

    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 aObjeto

    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

    sitehttp://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

    http://www.db4o.com/http://www.db4o.com/http://www.db4o.com/http://www.db4o.com/
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    14/32

    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 basede 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 sugeridopara 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 Bancode Dados Orientados a Objetos (SGBDOO) comercial desenvolvido pela empresa

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    15/32

    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 emJava, 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

    http://www.gemstone.com/http://www.gemstone.com/http://www.gemstone.com/
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    16/32

    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 dadospor arquivo. A verso Embedded, limitada com banco de dados incorporado no

    http://www.objectdb.com/http://www.objectdb.com/http://www.objectdb.com/
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    17/32

    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 suportea 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 oscomponentes do Jasmine.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    18/32

    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 dadosRelacional

    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.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    19/32

    19

    Banco de Dados Relacional Banco de Dados Orientados a Objetos

    Tabelas (Entidades) Objetos

    Query's (Consultas, etc) ative Querys

    SQLAnsi Mtodos, Construtores

    Figura 9. Comparao Banco de Dados Relacional X Banco de DadosOrientados 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 padrochamado 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.1Desenvolvimento utilizando o Modelo Orientado a Objetos com um Bancode Dados Relacional

    Nos ltimos anos, o paradigma de orientao a objetos vem sedesenvolvendo 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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    20/32

    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 flexveisque 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 disponveispara 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. Amodelagem 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

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    21/32

    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 autoresdizem 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 aosSGBDs 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, responsvelpor mapear classes e atributos do modelo orientado a objeto para tabelas e colunas

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    22/32

    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 Object-

    Relational 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 dadosrelacional, algum acordo deve ser feito no tocante forma como os dados sero

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    23/32

    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, porexemplo). 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 interessantea adoo de "tabeles" (isto , tabelas no-normalizadas agrupando dados de

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    24/32

    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.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    25/32

    25

    4.3.6 Lista de Ferramentas de mapeamento objeto-relacional

    C++

    Figura 9. Representao de Ferramenta para C++

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    26/32

    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 paramultitenancy SaaS e comunicao remota para Adobe Flex

    Carbonado , framework de cdigo aberto, apoiado porBerkeley

    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)

    http://en.wikipedia.org/wiki/Athena_Frameworkhttp://en.wikipedia.org/wiki/Multitenancyhttp://en.wikipedia.org/wiki/ActiveJDBChttp://en.wikipedia.org/wiki/Active_record_patternhttp://en.wikipedia.org/wiki/Apache_Cayennehttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Apache_OpenJPAhttp://en.wikipedia.org/wiki/Java_Data_Objectshttp://en.wikipedia.org/wiki/Java_Data_Objectshttp://en.wikipedia.org/wiki/Java_Persistence_APIhttp://en.wikipedia.org/wiki/Apache_Torquehttp://en.wikipedia.org/wiki/Athena_Frameworkhttp://en.wikipedia.org/wiki/Adobe_Flexhttp://en.wikipedia.org/wiki/Carbonado_(Java)http://en.wikipedia.org/wiki/Berkeley_DBhttp://en.wikipedia.org/wiki/Berkeley_DBhttp://en.wikipedia.org/wiki/Java_Database_Connectivityhttp://en.wikipedia.org/wiki/Ebeanhttp://en.wikipedia.org/wiki/EclipseLinkhttp://en.wikipedia.org/wiki/Enterprise_Objects_Frameworkhttp://en.wikipedia.org/wiki/WebObjectshttp://en.wikipedia.org/wiki/Hibernate_(Java)http://en.wikipedia.org/wiki/Java_Data_Objectshttp://en.wikipedia.org/wiki/Fjorm_(software)http://en.wikipedia.org/wiki/MyBatishttp://en.wikipedia.org/wiki/Java_Object_Oriented_Queryinghttp://en.wikipedia.org/wiki/Java_Persistence_APIhttp://en.wikipedia.org/wiki/DataNucleushttp://en.wikipedia.org/wiki/Object_Relational_Bridgehttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/OpenJPAhttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/ORMLitehttp://en.wikipedia.org/wiki/TopLinkhttp://en.wikipedia.org/wiki/QuickDB_ORMhttp://en.wikipedia.org/wiki/QuickDB_ORMhttp://en.wikipedia.org/wiki/TopLinkhttp://en.wikipedia.org/wiki/ORMLitehttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/OpenJPAhttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Object_Relational_Bridgehttp://en.wikipedia.org/wiki/DataNucleushttp://en.wikipedia.org/wiki/Java_Persistence_APIhttp://en.wikipedia.org/wiki/Java_Object_Oriented_Queryinghttp://en.wikipedia.org/wiki/MyBatishttp://en.wikipedia.org/wiki/Fjorm_(software)http://en.wikipedia.org/wiki/Java_Data_Objectshttp://en.wikipedia.org/wiki/Hibernate_(Java)http://en.wikipedia.org/wiki/WebObjectshttp://en.wikipedia.org/wiki/Enterprise_Objects_Frameworkhttp://en.wikipedia.org/wiki/EclipseLinkhttp://en.wikipedia.org/wiki/Ebeanhttp://en.wikipedia.org/wiki/Java_Database_Connectivityhttp://en.wikipedia.org/wiki/Berkeley_DBhttp://en.wikipedia.org/wiki/Berkeley_DBhttp://en.wikipedia.org/wiki/Carbonado_(Java)http://en.wikipedia.org/wiki/Adobe_Flexhttp://en.wikipedia.org/wiki/Athena_Frameworkhttp://en.wikipedia.org/wiki/Apache_Torquehttp://en.wikipedia.org/wiki/Java_Persistence_APIhttp://en.wikipedia.org/wiki/Java_Data_Objectshttp://en.wikipedia.org/wiki/Java_Data_Objectshttp://en.wikipedia.org/wiki/Apache_OpenJPAhttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Apache_Cayennehttp://en.wikipedia.org/wiki/Active_record_patternhttp://en.wikipedia.org/wiki/ActiveJDBChttp://en.wikipedia.org/wiki/Multitenancyhttp://en.wikipedia.org/wiki/Athena_Framework
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    27/32

    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 agorainativo.

    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

    http://en.wikipedia.org/wiki/EJBhttp://en.wikipedia.org/wiki/DatabaseObjectshttp://en.wikipedia.org/wiki/ADO.NET_Entity_Frameworkhttp://en.wikipedia.org/wiki/Base_One_Foundation_Component_Libraryhttp://en.wikipedia.org/wiki/Business_Logic_Toolkithttp://en.wikipedia.org/wiki/Devart_(company)http://en.wikipedia.org/wiki/Oracle_Databasehttp://en.wikipedia.org/wiki/Oracle_Databasehttp://en.wikipedia.org/wiki/MySQLhttp://en.wikipedia.org/wiki/PostgreSQLhttp://en.wikipedia.org/wiki/SQLitehttp://en.wikipedia.org/wiki/Castle_ActiveRecordhttp://en.wikipedia.org/wiki/DatabaseObjectshttp://en.wikipedia.org/wiki/DataObjects.NEThttp://en.wikipedia.org/wiki/Dapper_ORMhttp://en.wikipedia.org/wiki/ECO_(Domain_Driven_Design)http://en.wikipedia.org/wiki/EntitySpaceshttp://en.wikipedia.org/wiki/IBATIShttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Language_Integrated_Query#LINQ_to_SQLhttp://en.wikipedia.org/wiki/LLBLGen_Prohttp://en.wikipedia.org/wiki/Neo_(object-relational_toolset)http://en.wikipedia.org/wiki/NHibernatehttp://en.wikipedia.org/wiki/NHydratehttp://en.wikipedia.org/wiki/Persistor.NEThttp://en.wikipedia.org/wiki/Quick_Objectshttp://en.wikipedia.org/wiki/Signum_Frameworkhttp://en.wikipedia.org/wiki/SubSonic_(software)http://en.wikipedia.org/wiki/Bold_for_Delphihttp://en.wikipedia.org/wiki/ECO_(Domain_Driven_Design)http://en.wikipedia.org/wiki/ECO_(Domain_Driven_Design)http://en.wikipedia.org/wiki/Bold_for_Delphihttp://en.wikipedia.org/wiki/SubSonic_(software)http://en.wikipedia.org/wiki/Signum_Frameworkhttp://en.wikipedia.org/wiki/Quick_Objectshttp://en.wikipedia.org/wiki/Persistor.NEThttp://en.wikipedia.org/wiki/NHydratehttp://en.wikipedia.org/wiki/NHibernatehttp://en.wikipedia.org/wiki/Neo_(object-relational_toolset)http://en.wikipedia.org/wiki/LLBLGen_Prohttp://en.wikipedia.org/wiki/Language_Integrated_Query#LINQ_to_SQLhttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/IBATIShttp://en.wikipedia.org/wiki/EntitySpaceshttp://en.wikipedia.org/wiki/ECO_(Domain_Driven_Design)http://en.wikipedia.org/wiki/Dapper_ORMhttp://en.wikipedia.org/wiki/DataObjects.NEThttp://en.wikipedia.org/wiki/DatabaseObjectshttp://en.wikipedia.org/wiki/Castle_ActiveRecordhttp://en.wikipedia.org/wiki/SQLitehttp://en.wikipedia.org/wiki/PostgreSQLhttp://en.wikipedia.org/wiki/MySQLhttp://en.wikipedia.org/wiki/Oracle_Databasehttp://en.wikipedia.org/wiki/Oracle_Databasehttp://en.wikipedia.org/wiki/Devart_(company)http://en.wikipedia.org/wiki/Business_Logic_Toolkithttp://en.wikipedia.org/wiki/Base_One_Foundation_Component_Libraryhttp://en.wikipedia.org/wiki/ADO.NET_Entity_Frameworkhttp://en.wikipedia.org/wiki/DatabaseObjectshttp://en.wikipedia.org/wiki/EJB
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    28/32

    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 implementaoActiveRecord

    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

    http://en.wikipedia.org/wiki/Enterprise_Objects_Frameworkhttp://en.wikipedia.org/wiki/WebObjectshttp://en.wikipedia.org/wiki/Core_Datahttp://en.wikipedia.org/wiki/DBIx::Classhttp://en.wikipedia.org/wiki/CakePHPhttp://en.wikipedia.org/wiki/CodeIgniterhttp://en.wikipedia.org/wiki/Doctrine_(PHP)http://en.wikipedia.org/wiki/FuelPHPhttp://en.wikipedia.org/wiki/Propel_(PHP)http://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Qcodohttp://en.wikipedia.org/wiki/Identity_map_patternhttp://en.wikipedia.org/wiki/Rocks_(PHP)http://en.wikipedia.org/wiki/Redbean_(software)http://en.wikipedia.org/wiki/Torpor_(PHP)http://en.wikipedia.org/wiki/Yiihttp://en.wikipedia.org/wiki/Zend_Frameworkhttp://en.wikipedia.org/wiki/TORMhttp://en.wikipedia.org/wiki/Django_(web_framework)http://en.wikipedia.org/wiki/Django_(web_framework)http://en.wikipedia.org/wiki/TORMhttp://en.wikipedia.org/wiki/Zend_Frameworkhttp://en.wikipedia.org/wiki/Yiihttp://en.wikipedia.org/wiki/Torpor_(PHP)http://en.wikipedia.org/wiki/Redbean_(software)http://en.wikipedia.org/wiki/Rocks_(PHP)http://en.wikipedia.org/wiki/Identity_map_patternhttp://en.wikipedia.org/wiki/Qcodohttp://en.wikipedia.org/wiki/Apache_Software_Foundationhttp://en.wikipedia.org/wiki/Propel_(PHP)http://en.wikipedia.org/wiki/FuelPHPhttp://en.wikipedia.org/wiki/Doctrine_(PHP)http://en.wikipedia.org/wiki/CodeIgniterhttp://en.wikipedia.org/wiki/CakePHPhttp://en.wikipedia.org/wiki/DBIx::Classhttp://en.wikipedia.org/wiki/Core_Datahttp://en.wikipedia.org/wiki/WebObjectshttp://en.wikipedia.org/wiki/Enterprise_Objects_Framework
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    29/32

    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

    A utilizao do NHibernate trs diversas vantagens durante o

    desenvolvimento de um projeto. Por ser um port do NHibernate, o frameworkapresenta 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 oNHibernate crie ou atualize o banco de dados para coincidir com o modelo na

    http://en.wikipedia.org/wiki/SQLAlchemyhttp://en.wikipedia.org/wiki/SQLObjecthttp://en.wikipedia.org/wiki/Storm_(software)http://en.wikipedia.org/wiki/Canonical_Ltd.http://en.wikipedia.org/wiki/Trytonhttp://en.wikipedia.org/wiki/Web2pyhttp://en.wikipedia.org/wiki/ActiveRecord_(Rails)http://en.wikipedia.org/wiki/Ruby_on_Railshttp://en.wikipedia.org/wiki/DataMapper_(Ruby)http://en.wikipedia.org/wiki/IBATIShttp://en.wikipedia.org/wiki/TopLinkhttp://en.wikipedia.org/wiki/DatabaseObjectshttp://en.wikipedia.org/wiki/DatabaseObjectshttp://en.wikipedia.org/wiki/TopLinkhttp://en.wikipedia.org/wiki/IBATIShttp://en.wikipedia.org/wiki/DataMapper_(Ruby)http://en.wikipedia.org/wiki/Ruby_on_Railshttp://en.wikipedia.org/wiki/ActiveRecord_(Rails)http://en.wikipedia.org/wiki/Web2pyhttp://en.wikipedia.org/wiki/Trytonhttp://en.wikipedia.org/wiki/Canonical_Ltd.http://en.wikipedia.org/wiki/Storm_(software)http://en.wikipedia.org/wiki/SQLObjecthttp://en.wikipedia.org/wiki/SQLAlchemy
  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    30/32

    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.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    31/32

    31

    Concluso

    Os BDOO surgiram para oferecer uma alternativa de suporte s operaes

    onde os bancos de dados relacionais no eram capazes ou eficientes. Caberessaltar 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 aORM (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.

  • 7/27/2019 Marcos de Andrade Vilalva - Produo Textual Interdiciplinar - Individual - 4 semestre

    32/32

    32

    Referncias

    Banco de Dados Orientados a Objetos. Disponvel em:

    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 os conceitos sobre mapeamento

    objeto/relacional. Disponvel em: < http://www.dicas-

    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:

    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-os-

    frameworks-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.

    http://www.faculdadedombosco.edu.br/downloadAnexo.php?type=noticia&id=131http://www.faculdadedombosco.edu.br/downloadAnexo.php?type=noticia&id=131http://www.apinfo.com/artigo50.htmhttp://www.dicas-l.com.br/freedb/freedb_20100315.phphttp://www.dicas-l.com.br/freedb/freedb_20100315.phphttp://www.dicas-l.com.br/freedb/freedb_20100315.phphttp://sgclab.ic.uff.br/sgclab/index.php/publications/category/1papers?download=2:study-of-database-reliability-and-performancehttp://sgclab.ic.uff.br/sgclab/index.php/publications/category/1papers?download=2:study-of-database-reliability-and-performancehttp://sgclab.ic.uff.br/sgclab/index.php/publications/category/1papers?download=2:study-of-database-reliability-and-performancehttp://www.princiweb.com.br/blog/programacao/aspnet/veja-o-que-e-orm-e-os-frameworks-disponiveis-para-net.htmlhttp://www.princiweb.com.br/blog/programacao/aspnet/veja-o-que-e-orm-e-os-frameworks-disponiveis-para-net.htmlhttp://en.wikipedia.org/wiki/List_of_object-relational_mapping_softwarehttp://en.wikipedia.org/wiki/List_of_object-relational_mapping_softwarehttp://en.wikipedia.org/wiki/List_of_object-relational_mapping_softwarehttp://en.wikipedia.org/wiki/List_of_object-relational_mapping_softwarehttp://www.princiweb.com.br/blog/programacao/aspnet/veja-o-que-e-orm-e-os-frameworks-disponiveis-para-net.htmlhttp://www.princiweb.com.br/blog/programacao/aspnet/veja-o-que-e-orm-e-os-frameworks-disponiveis-para-net.htmlhttp://sgclab.ic.uff.br/sgclab/index.php/publications/category/1papers?download=2:study-of-database-reliability-and-performancehttp://sgclab.ic.uff.br/sgclab/index.php/publications/category/1papers?download=2:study-of-database-reliability-and-performancehttp://www.dicas-l.com.br/freedb/freedb_20100315.phphttp://www.dicas-l.com.br/freedb/freedb_20100315.phphttp://www.apinfo.com/artigo50.htmhttp://www.faculdadedombosco.edu.br/downloadAnexo.php?type=noticia&id=131