Sunday, October 27, 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

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.