MAPEAMENTO OBJETO-RELACIONAL EM JAVA E PHP



Documentos relacionados
Persistência de dados com JPA. Hélder Antero Amaral Nunes

UFG - Instituto de Informática

Persistência e Banco de Dados em Jogos Digitais

Orientação a Objetos

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Prof.: Clayton Maciel Costa

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Introdução a Java. Hélder Nunes

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Principais Comandos SQL Usados no MySql

HIBERNATE EM APLICAÇÃO JAVA WEB

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Especificação do Trabalho

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Tarefa Orientada 16 Vistas

Curso Superior de Tecnologia em BD

Banco de Dados. Arquitetura e Terminologia. Prof. Walteno Martins Parreira Jr waltenomartins@yahoo.

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Persistência em Software Orientado a Objetos:

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

JPA: Persistência padronizada em Java

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

NOME SEXO CPF NASCIMENTO SALARIO

Capítulo 22. Associações entre Classes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

UFG - Instituto de Informática

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Noções de. Microsoft SQL Server. Microsoft SQL Server

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

UML Aspectos de projetos em Diagramas de classes

Resolvendo objeto-relacional impedance mismatch com hibernate

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Banco de Dados. Maurício Edgar Stivanello

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

Técnicas de Normalização por Phaser

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

MOR: Uma Ferramenta para o Mapeamento Objeto-Relacional em Java

Oficina. Praça das Três Caixas d Água Porto Velho - RO

Padrões de projeto 1

Desenvolvendo Websites com PHP

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Roteiro 2 Conceitos Gerais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Persistência de Dados em Java com JPA e Toplink


LINGUAGEM DE BANCO DE DADOS

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

COMPARAÇÃO ENTRE OS FRAMEWORKS DE DESENVOLVIMENTO DE SOFTWARE ENTITY FRAMEWORK E NHIBERNATE : ESTUDO DE CASO EM UM SISTEMA

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

Classes de Entidades Persistentes JDB

SISTEMAS DE INFORMAÇÃO GERENCIAIS

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Documento de Projeto de Sistema

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

Sistemas Distribuídos

4.6. SQL - Structured Query Language

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Especificação do 3º Trabalho

Programação de Computadores - I. Profª Beatriz Profº Israel

Android e Bancos de Dados

BANCO DE DADOS. Fixação dos conteúdos Integridade Referencial Normalização Exercícios

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

RESUMO. Palavras-chave: Persistência. Framework ORM. JPA. Benckmark. ABSTRACT

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Modelagem de dados e uso do SGBD MySQL

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Parte I. Demoiselle Mail

CURSO DE PROGRAMAÇÃO EM JAVA

Metodologia para Representação da Estruturação de Dados Geoespacial Vetorial (EDGV) em Bancos de Dados Geográficos Relacionais

PHP Programando com Orientação a Objetos

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

Aula 1 Acesso a Banco de Dados

Projeto de Banco de Dados

Modelo de Dados. Modelos Conceituais

Engenharia de Software III

Desenvolvendo Websites com PHP

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Transcrição:

4 MAPEAMENTO OBJETO-RELACIONAL EM JAVA E PHP Josiel Silva Moura 1 Carlos David Rocha de Souza 1 RESUMO Atualmente, é comum o uso de bancos de dados relacionais no meio corporativo e da programação orientada a objetos nas aplicações de interface. Os desenvolvedores frequentemente deparam-se com estes dois paradigmas diferentes: o modelo relacional e o modelo de objetos. Este estudo tem como objetivo apresentar as principais técnicas de persistência de objetos, com relevância na técnica de Mapeamento Objeto-Relacional em Java. Compreender os conceitos da técnica ORM é o primeiro passo para usar efetivamente os frameworks disponíveis. Palavras-chave: Objeto-Relacional, Banco de Dados, Java, PHP. ABSTRACT Currently, it is common to use relational databases in the corporate environment and object-oriented programming interface for applications. Developers often are faced with these two different paradigms: the relational model and object model. This study aims to present the main techniques for object persistence, with relevance to the technique of Object- Relational Mapping in Java. Understand the concepts of ORM technique is the first step to effectively use the available frameworks. Key-Words: Object-Relational, Database, Java, PHP. 1 INTRODUÇÃO A orientação a objeto provê diversos benefícios em relação a sua predecessora (a análise estruturada), tais como encapsulamento, polimorfismo, herança, etc. Essas características proporcionam soluções muito mais fáceis de representação através da orientação a objeto traduz os objetos do mundo real da forma como eles realmente são em oposição à representação de funcionalidades como era na análise estruturada. Se, por um lado, as aplicações são beneficiadas por uma abordagem orientada a objeto, a persistência dos dados nos bancos relacionais demanda uma atenção muito maior, pois a tradução entre esses dois mundos não é direta. Como existem diferenças conceituais entre o modelo relacional usados pelos bancos de dados e a orientação a objetos, acabou surgindo a técnica de mapeamento objeto-relacional (ORM). Ess a técnica sugere como devemos persistir o estado de um objeto (atributos, relacionamentos e herança) em tabelas de banco de dados relacional. Diversas plataformas e linguagens promovem essa técnica através de frameworks. Na plataforma Java existe o consagrado framework Hibernate (Hibernate, 21) e o padrão chamado JPA (Biswas, et al., 20). Em PHP temos o LUMINE (Lumine, 20). Já na plataforma.net também podemos encontrar o NHibernate (um porte do Hibernate para.net) e o Microsoft ObjectSpaces (Esposito, 20), dentre outros. Compreender os conceitos da técnica ORM é o primeiro passo para usar efetivamente os frameworks disponíveis. Scott W. Ambler em (Ambler, 20) e (Ambler, 20), descreve minuciosamente essa técnica, além de discutir o gap conceitual entre o modelo relacional e a orientação a objetos. 2. MAPEAMENTO OBJETO-RELACIONAL Grande parte do desenvolvimento de aplicações modernas utiliza a tecnologia orientada a objetos, mas mantém como principal meio de persistência os bancos de dados relacionais (NASSU, et al., 1999). Enquanto o paradigma da orientação a objetos é baseado em princípios provados pela engenharia de software, o paradigma relacional é baseado em princípios matemáticos, especificamente em teoremas da álgebra relacional. Por consequência das diferenças entre os dois modelos, há uma dificuldade do ponto de vista técnico para a implementação rápida e descomplicada de aplicações que envolvam programação em linguagem orientada a objetos e o armazenamento de informações em um SGBD relacional. Esse é um problema recorrente que recebeu o nome de "Impedance Mismatch" (Ambler, 20) Há uma diferença de representação: os objetos são referenciados em memória, enquanto os dados são referenciados por chaves em tabelas, que existem fisicamente. Além disso, os objetos possuem campos multivalorados, ao contrário do modelo relacional, onde os dados devem ser atômicos. Veremos agora como fazer o mapeamento das relações da orientação a objetos, como dependência, agregação, composição e herança entre os objetos de um programa orientado a objetos para bancos de dados relacionais, os quais armazenam dados em linhas e colunas de tabelas que mantêm ligações lógicas entre si pela utilização de chaves estrangeiras. 2.1 Chave de Identificação A forma que os bancos de dados relacionais encontram para dar unicidade aos seus registros é a criação de chaves primárias nas tabelas, nas quais criamos uma coluna cujo valor-chave é não-repetitivo e não-nulo (Date, 20). Os objetos de um sistema não precisam de tal chave para se tornarem únicos. A unicidade dos objetos em memória é controlada por mecanismos da própria linguagem de programação, a qual geralmente oferece On-line http://revista.univar.edu.br/ Interdisciplinar: Revista Eletrônica da Univar (21) nº. 6 p. 4-8

5 meios de se referenciar um objeto, ou mesmo de clonar um objeto já existente, controlando sua identidade por meio de um OID (Object Identifier) (Dall'Oglio, 20). De qualquer forma, dois objetos distintos são armazenados em regiões diferentes da memória e referenciados por suas variáveis. Como compatibilizar então o modelo conceitual e o modelo de dados da aplicação? A resposta consiste da criação da chave primária do registro também para os objetos de negócio da aplicação. A adoção dessa chave é de suma importância, uma vez que lemos as informações de um registro do banco de dados, instanciamos um objeto de negócio com tais informações, modificamos esse objeto e, em um dado momento, desejamos armazenar esse objeto novamente no banco de dados, substituindo suas informações originais. Isso é possível somente pela sua chave primária. 3. UMA SITUAÇÃO DE NEGÓCIO Para demonstrar esses conceitos, imagine que você possua uma estante repleta de livros e seja solicitado o desenvolvimento de um sistema para catalogar os livros e que o principal objetivo desse seja facilitar a consultar (busca) por um livro. A consulta deve ser feita pelo título do livro ou pelo autor. Em nosso sistema, a principal entidade deve ser o Livro, mas esse depende de algumas outras, tais como, Editora e Autor, esses não podem ser um atributo da entidade Livro, pois a Editora possui vários campos próprios (campo multivalorado) e um Livro poderá ter vários Autores (campo não-atômico). Veja abaixo o diagrama de Entidade- Relacionamento simplificada para nosso sistema de catálogo de livros. Figura 1:Diagrama criado no MySQL Workbench (21) No mundo relacional um relacionamento um para um não é visto como uma boa prática de design, devendo ser utilizado apenas em casos especiais, conhecidos como particionamento horizontal ou vertical. Para esse tipo de associação, podemos adicionar uma chave estrangeira a uma das tabelas, mapeada para a chave estrangeira da outra tabela (Amaral, 20). Dessa forma não abordaremos esse tipo de relacionamento aqui. 4. RELACIONAMENTO UM-PARA-MUITOS Observe o diagrama abaixo, ele representa o relacionamento entre as entidades Livro e Editora. Esse relacionamento é um relacionamento do tipo um-paramuitos, porque uma Editora pode ter muitos Livros enquanto um livro pode pertencer apenas a uma editora. Figura 2: Diagrama de Entidade-Relacionamento 1:1 A implementação em Java dos relacionamentos um-para-muitos é relativamente simples. Na classe de multiplicidade muitos (Livro), adicione um atributo do tipo da classe de multiplicidade um (Editora) e os correspondentes métodos get s e set s para esse atributo. Não nos preocuparemos com os Autores do Livro por enquanto. 4.1 Implementando as Classes de Entidades Devemos iniciar pela entidade que não possui dependência, ou seja, que ela exista por si própria, não dependendo de outras entidades (Deitel, 20). Assim iniciaremos a criação a entidade Editora: 42 public class Editora { private String nome; private String cidade; private String site; public Editora(){ Listagem 1: Classe Editora.java Na classe Livro que possui dependência da classe Editora, devemos declarar o atributo editora do tipo Editora. Veja abaixo o código-fonte da entidade Livro: public class Livro { private String titulo; private String categoria; private String edicao; private String ano; private Editora editora; public Livro() { Listagem 2: Classe Livro.java 4.2 RELACIONAMENTO MUITOS-PARA- MUITOS On-line http://revista.univar.edu.br/ Interdisciplinar: Revista Eletrônica da Univar (21) nº. 6 p. 4-8

6 Como exemplo desse tipo de relacionamento, considere a relação livro-autor: um livro pode ser escrito por vários autores; um autor, por sua vez, pode escrever vários livros. Na implementação dos relacionamentos muitos-para-muitos em bancos de dados relacionais, a solução tem sido usar uma tabela associativa que represente o relacionamento (Murta, et al., 20). Para isso: Cria-se uma nova tabela no banco de dados para representar o relacionamento muitospara-muitos entre duas tabelas; Inclue-se como chave estrangeira dessa tabela as chaves primárias das tabelas que participam do relacionamento; Combina-se essas chaves estrangeiras para formar a chave primária da tabela associativa Veja diagrama o Digrama de Entidaderelacionamento para o contexto descrito: Na entidade Livro, iremos apenas acrescentar o atributo autores do tipo List da classe java.util.list, e seus respectivos get s e set s. 15 16 import java.util.list; public class Livro { private String titulo; private String categoria; private String edicao; private String ano; private Editora editora; private List<Autor> autores; public Livro() { Listagem 4: Classe Livro.java modificada As linhas que acrescentadas estão em destaque na listagem acima. Durante o projeto, colunas adicionais podem ser incluídas nas tabelas, visões que suportem requisitos de consulta e relatório podem ser criadas e índices podem ser elaborados para otimizar o desempenho. Não devem ocorrer grandes reestruturações da tabela ao longo do projeto do sistema, pois isso demonstra que a arquitetura não está estabilizada. Figura 3: Diagrama de Entidade-Relacionamento para livro e autor. 4.3 Implementando as Classes de Entidades Já na implementação dos relacionamentos muitos-para-muitos em programação orientada a objeto, utiliza-se campos multivalorados do tipo coleção, optou-se aqui por criar uma lista de autores na entidade Livro, assim iniciaremos a codificação pela entidade Autor. public class Autor { private String nome; private String email; public Autor() { Listagem 3: Classe Autor.java 5 MAPEAMENTO DE OBJETO RELACIONAL EM PHP UTILIZANDO TABLE DATA GATEWAY A utilização de mapeamento de objetorelacioal era algo distante quanto ao uso da linguagem PHP já que a mesma não provia de métodos para persistência de dados em um banco de dados método o qual é bem desenvolvido nas plataformas JAVA e.net. Em um contexto amplo e geral persistência significa continuar a existir, perseverar, durar longo tempo ou permanecer. Em uma linguagem de programação ou um plano de negócios persistência significa a possibilidade de esses objetos existirem em um meio externo à aplicação que os criou, de modo que esse meio deve permitir que o objeto perdure não deve ser um meio volátil, meio ao qual os bancos de dados modelo relacional utilizam tão bem com métodos específicos de cadê fabricante utilizando a linguagem SQL para armazenagem e manipulação de dados, mas existem conceitos na orientação a objetos para os quais o modelo relacional simplesmente não oferece suporte, levando ao paradigma de diferentes conceitos, o modelo relacional que utiliza a codificação estrutural e o orientado a objeto que trabalha com abstração e instanciação e encapsulamento de objetos. A implementação do código abaixo busca solucionar o problema do banco relação em relação à síntese de orientação a objeto em PHP. Para mapear o objeto Editora, foi utilizada a técnica de pattern Table Data Gateway (Fowler, 20) que oferece uma On-line http://revista.univar.edu.br/ Interdisciplinar: Revista Eletrônica da Univar (21) nº. 6 p. 4-8

interface de comunicação com o banco de dados que permite operações de inserção, alteração, exclusão e busca de registro. Implementando uma classe responsável em persistir e retornar dados do banco de dados. Para isso existem métodos específicos que traduzem sua função em instruções SQL. 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 <?php class EditoraGateway { * método insert function insert($codigo, $nome, $cidade, $site) { // cria instrução SQL de insert $sql = "INSERT INTO editora (codigo, nome, cidade, site)". " VALUES ('$codigo', '$nome', '$cidade', '$site')"; >exec($sql); * método update function update($codigo, $nome, $cidade, $site) { // cria instrução SQL de UPDATE $sql = "UPDATE editora set nome = '$nome', ". " cidade = '$cidade', site = '$site' ". " WHERE codigo = '$codigo'"; >exec($sql); * método delete function delete($codigo) { // cria instrução SQL de DELETE $sql = "DELETE FROM editora where codigo='$codigo'"; 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 0 1 2 3 4 5 6 7 7 >exec($sql); * método getobject * busca um registro da tabela editora function getobject($codigo) { // cria instrução SQL de SELECT $sql = "SELECT * FROM editora where codigo='$codigo'"; // executa consulta SQL $result = >query($sql); $data = $result- >fetch(pdo::fetch_assoc); return $data; * método getobjects * lista todos registros da tabela editora function getobjects() { // cria instrução SQL de SELECT $sql = "SELECT * FROM editora"; // executa consulta SQL $result = >query($sql); $data = $result- >fetchall(pdo::fetch_assoc); return $data; // instancia objeto ProdutoGateway $gateway = new EditoraGateway; On-line http://revista.univar.edu.br/ Interdisciplinar: Revista Eletrônica da Univar (21) nº. 6 p. 4-8

8 // insere alguns registros na tabela $gateway->insert(null, 'Novatec', 'São Paulo', 'www.novatec.com.br'); $gateway->insert(null, 'Moderna', 'São Paulo', 'www.editoramoderna.com.br'); $gateway->insert(null, 'Univar', 'Barra do Garças', 'www.univar.edu.br'); // efetua algumas alterações $gateway->update(1, 'Novatec', 'São Paulo - SP', 'www.novatec.com.br'); $gateway->update(2, 'Moderna', 'São Paulo', 'www.moderna.com.br'); // exclui $gateway->delete(3); // exibe novamente os registros echo "Lista de Editoras<br>\n"; print_r($gateway->getobjects());?> Listagem 5: Arquivo EditoraGateway.php Ao trabalhar com Table Data Gateway é necessário criar uma classe para manipulação de cada tabela de banco de dados, e apenas uma instancia dessa classe irá manipular todos os registros da tabela. 6 CONSIDERAÇÕES FINAIS Este artigo apresentou uma abordagem para o armazenamento de objetos Java em bancos de dados relacionais. A principal contribuição deste trabalho é prover uma solução transparente e acessível para o problema de mapeamento objeto-relacional. Apesar da relutância de alguns em adotar esquemas de persistência, fica evidente que sua utilização traz um ganho considerável de tempo na implementação de um sistema e eleva a qualidade do produto final, à medida que diminui a possibilidade de erros de codificação. O mapeamento objeto relacional pode ser feito tanto manualmente quanto automaticamente. O processo de mapeamento objeto relacional manual, que foi abordado neste artigo, é trabalhoso, pois torna-se necessário definir, para cada classe do sistema, como esta se relaciona e como será armazenada. Já o processo automático, suportado por uma ferramenta de mapeamento torna esse processo mais simples, mas nem sempre o torna transparente. Assim este trabalho cumpri o objetivo de mostrar a transparência desse processo, para em um trabalho futuro mostrar como é feito em um processo automatizado utilizando um framework disponível. 7 REFERENACIA BIBLIOGRÁFICAS AMARAL, Fernando. Dicas de Mapeamento Objeto/Relacional. 20. Disponivel em <http://www.fernandoamaral.com.br/default.aspx?arti go=55>. Acessado em 21 de abril de 21. em <http://www.agiledata.org/essays/mappingobjects.html >. Acessado em 20 de abril de 21. The Object-Relational Impedance Mismatch. 20. Disponivel em <http://www.agiledata.org/essays/impedancemismatch. html>. Acessado em 16 de abril de 21. BISWAS, Rahul and Ort. The Java Persistence API - A Simpler Programming Model for Entity Persistence. 20. Disponivel em <http://www.oracle.com/technetwork/articles/javaee/jp a-7156.html>. Acessado em 30 de maio de 21. DALL'OGLIO, Pablo. PHP: programando com orientação a objetos. São Paulo : Novatec Editora, 20. DATE, C.J. Introdução a Sistemas de Bancos de Dados. São Paulo : Campus, 20. DEITEL, Paul J. Java: Como Programar. 6ª ed. Prentice-Hall, 20. ESPOSITO, Dino. A First Look at ObjectSpaces in Visual Studio 20. 20. Disponivel em <http://msdn.microsoft.com/enus/library/ms9715.aspx>. Acessado em 23 de maio de 21. FOWLER, Martin. Table Data Gateway. 20. Disponivel em <http://martinfowler.com/eaacatalog/tabledatagatewa y.html>. Acessado em 20 de abril de 21. HIBERNATE. Hibernate - JBoss Community. 21. Disponivel em <http://www.hibernate.org/>. Acessado em de abril de 21. LUMINE. Lumine - Database Mapping for PHP. 20. Disponivel em <http://www.hufersil.com.br/lumine.>. Acessado em 23 de abril de 21. MURTA, Leonardo Gresta Paulino, Veronese, Gustavo Olanda and Werner, Cláudia Maria Lima. MOR: Uma Ferramenta para o Mapeamento. Rio de Janeiro : UFRJ, 20. MySQL. MySQL Workbench. 21. Disponivel em <http://wb.mysql.com>. Acessado em 25 de maio de 21. NASSU, E. A. and SETZER, W. W. Banco de Dados Orientado a Objeto. 1ª Edição. Editora Edgar Bkucher Ltda, 1999. AMBLER, Scott W. Mapping Objects to Relational Databases: O/R Mapping In Detail. 20. Disponivel On-line http://revista.univar.edu.br/ Interdisciplinar: Revista Eletrônica da Univar (21) nº. 6 p. 4-8