Saturday, November 16, 2019
Conjunto com bancos de dados relacionais
Conjunto com bancos de dados relacionais Resumo. A programaà §Ã £o orientada a objetos à © utilizada hà ¡ muito tempo em conjunto com bancos de dados relacionais, que à © considerado o padrà £o adotado pelo mercado hà ¡ anos. Entretanto, a passagem de dados de um objeto para uma tabela de um banco de dados relacional, do ponto de vista conceitual, costuma ser incompatà vel devido as adaptaà §Ã µes realizadas no modelo relacional para implementar integridades referenciais, facilitar consultas, etc. Por isso, outras tecnologias foram desenvolvidas para tornar a persistà ªncia de objetos em bancos de dados relacional mais natural. Neste trabalho, sà £o apresentadas duas tecnologias com este objetivo: DB4O, que utiliza um banco de dados orientado a objetos, armazenando diretamente a instà ¢ncia da classe no banco de dados e o framework JPA, que mapeia os objetos e seus atributos para suas respectivas tabelas no banco de dados relacional. A ferramenta Eclipse e o banco de dados MySQL foram utilizados para a impleme ntaà §Ã £o das aplicaà §Ã µes neste trabalho. Palavras-chave: JPA, DB4O, Banco de Dados nà £o convencional, Mapeamento Objeto-Relacional, Banco de Dados Orientado a Objeto, MySQL. 1 Introduà §Ã £o 1.1 Motivaà §Ã £o O crescente avanà §o do paradigma de programaà §Ã £o orientado a objetos tornou necessà ¡rio o estudo acerca de novas formas de persistir os dados de um sistema, pois o modelo relacional nà £o à © diretamente compatà vel com o paradigma, visto que nà £o foi feito pensando para orientaà §Ã £o a objetos. Existem duas abordagens que sà £o o objeto de estudo deste trabalho para tratar persistà ªncia de dados: bancos de dados orientados a objetos e mapeamento objeto-relacional. Bancos de dados orientados a objetos suportam o armazenamento de objetos complexos, mantendo sua estrutura, ao contrà ¡rio dos bancos relacionais que desconhecem o conceito de objeto. Objetos sà £o abstraà §Ã µes do mundo real e a manipulaà §Ã £o destes à © mais simples de entender quando comparado à s abstraà §Ã µes de um banco de dados relacional. Embora nà £o seja muito utilizado comercialmente, bancos de dados orientados a objeto và ªm evoluindo bastante, permitindo aplicaà §Ã µes cada vez mais robustas e atuando principalmente nas à ¡reas de manipulaà §Ã £o de objetos complexos como espaciais, som e và deo. O mapeamento objeto-relacional justamente serve para mapear os objetos em tabelas de um banco de dados relacional, utilizando todas as vantagens desse banco de dados e sendo transparente para o usuà ¡rio. Isto facilita o trabalho do desenvolvedor e permite uma melhor visualizaà §Ã £o da relaà §Ã £o entre os objetos e as relaà §Ã µes do banco reacional. Este trabalho à © resultado da primeira parte da disciplina ministrada pelo professor Sean W. M. Siqueira no primeiro semestre de 2009. A disciplina trata de bancos de dados nà £o convencionais, e faz parte do currà culo de Bacharelado em Sistemas de Informaà §Ã £o da Unirio (Universidade Federal do Estado do Rio de Janeiro) como disciplina optativa da linha de Banco de Dados. 1.2 Objetivo O objetivo deste trabalho à © apresentar duas tecnologias voltadas para o desenvolvimento orientado a objeto (DB4O e JPA) e como realizar suas respectivas implementaà §Ã µes que testam a persistà ªncia em um banco de dados orientado a objeto, mais especificamente o DB4O, e a persistà ªncia utilizando o mapeamento objeto-relacional, atravà ©s do framework JPA. Apà ³s a demonstraà §Ã £o destas duas implementaà §Ã µes, foi realizada uma comparaà §Ã £o entre as duas abordagens, incluindo a abordagem de desenvolvimento tradicional. 1.3 Modelo de classes Para a aplicaà §Ã £o, desenvolvemos o seguinte modelo de classes: 1.4 Estrutura do Relatà ³rio O relatà ³rio està ¡ estruturado em elementos prà ©-textuais, 5 (cinco) capà tulos, e elementos pà ³s-textuais. Na primeira parte hà ¡ itens como sumà ¡rio e à ndices. Em seguida, està £o os capà tulos que està £o brevemente descritos a seguir, e, por fim, os elementos pà ³s-textuais. capà tulo 1 explica a motivaà §Ã £o e o objetivo para este trabalho. capà tulo 2 apresenta o passo-a-passo para a implementaà §Ã £o de uma aplicaà §Ã £o utilizando a tecnologia DB4O. capà tulo 4 apresenta o passo-a-passo para desenvolvimento de uma aplicaà §Ã £o utilizando o framework JPA. capà tulo 4 apresenta as conclusà µes do presente trabalho, comparando as tecnologias envolvidas. capà tulo 5 apresenta as referà ªncias bibliogrà ¡ficas. 2 Etapas do desenvolvimento de aplicaà §Ã £o utilizando DB4O Este capà tulo apresenta o passo-a-passo para desenvolvimento de aplicaà §Ã £o utilizando o DB4O. 2.1 Softwares utilizados Os seguintes softwares foram utilizados para a implementaà §Ã £o dos servià §os. Eclipse JDK 6 2.2 Introduà §Ã £o ao DB4O banco de dados orientado a objetos DB4o à © um software open source de fà ¡cil instalaà §Ã £o e baixa necessidade de recurso, uma vez que ele nà £o à © um SGBD e por isso nà £o possui interface grà ¡fica e outras funcionalidades de gerenciamento. DB4o foi feito para poder ser utilizado em plataformas desktop, celulares, servidores, contanto que o ambiente seja orientado a objetos. Alà ©m disso, ele nà £o exige a necessidade de nenhuma programaà §Ã £o ou ferramenta para mapear a orientaà §Ã £o a objetos para o modelo relacional, pois ele faz uso da orientaà §Ã £o a objetos a seu favor, permitindo que o modelo seja uma representaà §Ã £o fiel do banco de dados. DB4o nà £o possui instalaà §Ã £o. No desenvolvimento realizado, utilizando o Eclipse, a à ºnica aà §Ã £o necessà ¡ria para instalar o DB4o foi importar o arquivo .jar como uma biblioteca para o eclipse. Apà ³s isso, os pacotes com os objetos necessà ¡rios para persistir os dados no DB4o està £o prontos para serem utilizados. Como o DB4o nà £o necessita de mapeamento, tambà ©m nà £o necessita de modelo là ³gico e fà sico, visto que ele à © totalmente baseado na orientaà §Ã £o a objetos, logo, o banco segue o modelo de classes. 2.3 Metodologia de desenvolvimento Para realizar o desenvolvimento da aplicaà §Ã £o, primeiro define-se as classes POJO (Plain Java Object). Os objetos que serà £o armazenados no DB4O sà £o pertencentes a essas classes de objetos implementadas no inà cio do desenvolvimento. Depois, desenvolve-se uma classe que permite inserà §Ã £o, consulta, alteraà §Ã £o e exclusà £o de objetos do banco. Para isso, à © necessà ¡rio importar diversas bibliotecas externas pertinentes ao desenvolvimento para DB4O e tambà ©m abrir o arquivo onde os objetos serà £o armazenados, instanciando um objeto da classe ObjectContainer, que representarà ¡ o banco de dados. Para inserà §Ã £o de objetos no DB4O, utilizamos o mà ©todo set da classe ObjectContainer, que armazena um objeto passado como parà ¢metro no DB4O. Para consulta de objetos no DB4O utilizamos o mà ©todo QueryByExample, que utiliza um objeto passado como parà ¢metro como exemplo e busca o objeto semelhante no DB4O. O resultado à © armazenado em uma varià ¡vel do tipo ObjectSet. Para alteraà §Ã £o de objetos no DB4O à © necessà ¡rio consultar o objeto que se deseja alterar e armazenà ¡-lo em um objeto da classe desejada. Depois, alterar os dados atravà ©s do mà ©todo set definido na classe POJO e colocar no DB4O atravà ©s do mà ©todo store, definido na classe ObjectContainer. Para a deleà §Ã £o de objetos no DB4O à © necessà ¡rio consultar o objeto que se deseja remover e utilizar o mà ©todo delete, definido na classe ObjectContainer. 2.4 Passo a passo para implementaà §Ã £o de uma aplicaà §Ã £o utilizando o DB4O O DB4O consiste em um arquivo .jar apenas, entà £o o primeiro passo (apà ³s realizar o download do DB4O) à © verificar qual .jar utilizar. Nesse caso, utilizamos o DB4o-7.4-java5.jar, pois à © o indicado para que utiliza o JDK 5 ou 6. 3 Etapas do desenvolvimento de aplicaà §Ã £o utilizando JPA Este capà tulo apresenta o passo-a-passo para desenvolvimento de aplicaà §Ã £o utilizando o framework JPA. 3.1 Softwares utilizados Os seguintes softwares foram utilizados para a implementaà §Ã £o dos servià §os. Eclipse Ganymede versà £o 3.4.0 (possui OpenJPA nativo) JDK 1.5 Hibernate MySQL 3.2 Introduà §Ã £o ao JPA O Java Persistence API (JPA) à © um produto implementado pela SUN, especificado para oferecer uma persistà ªncia transparente de objetos Java. O OpenJPA à © uma implementaà §Ã £o disponibilizada como software livre, desenvolvida pela Apache Software Foundation baseada no JPA produzido pela SUN. O JPA define um padrà £o de mapeamento dos objetos do modelo orientado a objetos para o modelo relacional, trazendo as vantagens dos dois mundos: a programaà §Ã £o orientada a objetos, paradigma consagrado de desenvolvimento e os bancos de dados relacionais, igualmente consagrados em termos de utilizaà §Ã £o e desempenho. Alà ©m disso, a tecnologia possui amplo suporte pela maioria dos das grandes empresas do mercado: Apache, Oracle, BEA, JBoss. As camadas que compà µe o framework para o mapeamento objeto-relacional utilizando JPA podem ser visualizadas na Figura 14: O JPA provà ª uma API simples e padronizada de persistà ªncia para Java SE e Java EE. Essa padronizaà §Ã £o permite a modularizaà §Ã £o do provedor JPA que à © oferecido em diversas versà µes por và ¡rios desenvolvedores, dando a opà §Ã £o de escolha o usuà ¡rio final. A padronizaà §Ã £o da tecnologia permite o aumento da produtividade e o uso de anotaà §Ã µes (Annotations) simplifica a configuraà §Ã £o das entidades. Seus objetos sà £o baseados em classes POJO (Plain Old Java Objects) e sua implementaà §Ã £o oferece suporte a heranà §a e polimorfismo. O JPA à © compatà vel com a linguagem de consulta Java Persistence Query Language (JP-QL) que utiliza uma sintaxe prà ³xima a SQL, porà ©m à © voltada para consulta de entidades e suas propriedades, criando independà ªncia em relaà §Ã £o à modelagem fà sica do banco de dados. A JPQL à © capaz de realizar consultas està ¡ticas (named queries) e consultas dinà ¢micas e permite a construà §Ã £o de consultas complexas. Portanto, o JPA à © uma soluà §Ã £o completa para mapeamento e persistà ªncia de objetos, sendo composto pelo modo declarativo de descrever mapeamento O/R, linguagem de consulta e recursos para manipulaà §Ã £o de entidades. 3.3 Metodologia de desenvolvimento Apà ³s a definià §Ã £o do modelo relacional, desenvolvem-se as classes POJO referentes as tabelas no banco de dados. Entà £o se insere as anotaà §Ã µes (annotations) que declaram que a classe possui uma respectiva tabela no banco de dados. Entretanto, ainda à © necessà ¡rio registrar essas classes no arquivo persistence.xml, que serà ¡ utilizado para definir o subconjunto de classes que poderà £o ser gerenciadas. Ao escrever o cà ³digo, deverà ¡ ser instanciada um objeto do tipo EntityManagerFactory passando o arquivo persistence.xml como parà ¢metro. A partir deste objeto, à © criado outro do tipo EntityManager, responsà ¡vel por gerenciar o ciclo de vida das entidades que està £o registradas. Ao iniciar a manipulaà §Ã £o dos objetos, à © necessà ¡rio iniciar uma transaà §Ã £o e entà £o registrar os comandos CRUD para serem executados. Entà £o, ao final, realiza-se o commit ou rollback destas operaà §Ã µes. A Figura 15 resume o fluxo de mapeamento objeto-relacional seguido pelo JPA. 3.4 Passo a passo para implementaà §Ã £o de uma aplicaà §Ã £o utilizando JPA O primeiro passo para iniciar a implementaà §Ã £o de uma aplicaà §Ã £o utilizando o framework JPA à © baixar os arquivos JAR necessà ¡rios para realizar as importaà §Ã µes das classes que serà £o utilizadas no programa. Como serà ¡ utilizado como provedor JPA (Figura 2) o framework de persistà ªncia Hibernate, os seguintes pacotes serà £o necessà ¡rios: Hibernate Core, Hibernate Annotations e Hibernate Entity Manager, que està £o disponà veis em http://sourceforge.net/projects/hibernate/files/. No desenvolvimento da aplicaà §Ã £o foram utilizadas as versà µes 3.2.0.GA do Hibernate Core, 3.3.0 GA do Hibernate Annotations e 3.3.1.GA do Hibernate Entity Manager. Cabe salientar que pacotes de outras versà µes do Hibernate podem resultar em falhas e erros inesperados em relaà §Ã £o aos procedimentos realizados neste relatà ³rio. O driver JDBC para o MySQL tambà ©m à © necessà ¡rio e pode ser baixado no site oficial do MySQL, em http://dev.mysql.com/downloads/connector/j/5.1.html. Para o desenvolvimento da aplicaà §Ã £o foi utilizado a versà £o 5.1.7 do driver JDBC para o MySQL. Em posse dos arquivos necessà ¡rios, iniciam-se os passos para o desenvolvimento da aplicaà §Ã £o no Eclipse. 4 Conclusà £o Conforme apresentado, o desenvolvimento utilizando bancos de dados orientado a objetos apresenta diversas facilidades em relaà §Ã £o à proposta tradicional de desenvolvimento e à proposta de mapeamento objeto-relacional. Essas vantagens sà £o as seguintes: Modelagem mais real: permite que o seu modelo de classes seja o seu modelo de armazenamento de dados, pois armazena exatamente os objetos como eles foram criados para serem armazenados, sem necessidade de nenhum tipo de transformaà §Ã £o Representaà §Ã £o de dados com formatos varià ¡veis: no relacional, as tuplas precisam ser homogà ªneas e os atributos atà ´micos, enquanto que no OO isso nà £o à © necessà ¡rio. à © possà vel ter dados em formatos varià ¡veis. Facilidade de instalaà §Ã £o e utilizaà §Ã £o: à © mais fà ¡cil e rà ¡pido instalar o DB4o do que algum banco de dados relacional, pois nà £o à © necessà ¡rio configurar e criar um banco de dados previamente, nem à © necessà ¡rio realizar um modelo relacional, fà sico e là ³gico, pois o prà ³prio modelo de classes à © a representaà §Ã £o dos dados no banco Mas, existem alguns problemas nessa tecnologia. Alguns jà ¡ foram citados anteriormente: Stored procedures: Nà £o existem stored procedures ou triggers, sendo necessà ¡rio programar na aplicaà §Ã £o essas funà §Ã µes, o que pode fazer cair o desempenho do sistema O modelo relacional jà ¡ està ¡ consolidado no mercado, acumulando anos de estudo e aprimoramento, oferecendo bom desempenho, mecanismos de otimizaà §Ã £o, tratamento de concorrà ªncia. 5 Referà ªncias Vasiliev, Yuli, 2008, Querying JPA Entities with JPQL and Native SQL Disponà vel em http://www.oracle.com/technology/pub/articles/vasiliev-jpql.html. Apache Software Fundation, Apache JPA Users Guide Disponà vel em http://JPA.apache.org/builds/latest/docs/manual/manual.pdf. OLIVEIRA, H.E.M, 2008, JPA Passo a Passo, TDC The Developers Conference 2008 Disponà vel em http://www.thedevelopersconference.com.br/arquivos/TDC2008Floripa-jpa-henrique.pdf DB4Objects, DB4O Tutorial Disponà vel em: http://developer.db4o.com/files/folders/db4o_74/entry49672.aspx ENGIEL, P., 2008, Comparaà §Ã £o entre as formas de persistir a programaà §Ã £o orientada a objetos
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.