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_Framework7/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/EJB7/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_Framework7/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/SQLAlchemy7/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