Cp25540549

299 views
231 views

Published on

IJERA (International journal of Engineering Research and Applications) is International online, ... peer reviewed journal. For more detail or submit your article, please visit www.ijera.com

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
299
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cp25540549

  1. 1. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549 Projeto de Banco de Dados Orientado a Objetos com Db4objects e Java Prof. Everton Castelão Tetila Universidade Federal da Grande Dourados Mestre em Engenharia de Produção pela Universidade Paulista Faculdade de Ciências Exatas e Tecnologia Rodovia Dourados/Itahum, Km 12 - Unidade II. Caixa Postal 533, CEP: 79.804-970 Dourados – MS, Brasil.ResumoOs bancos de dados tradicionais têm suprido as O modelo de dados orientado a objetos (OO)necessidades da maioria das aplicações comerciais apresenta a flexibilidade necessária para tratar osconvencionais, mas possuem algumas limitações requisitos sem estar limitado ao tipo de dados e aquando existe a necessidade de tratar objetos linguagem de consulta de banco de dadoscomplexos e efetuar operações não convencionais. tradicionais, como a Structured Query LanguageO sistema de banco de dados orientado a objetos (SQL). Isso é possível graças ao poder dado aooferece a flexibilidade para lidar com requisitos projetista para especificar tanto a estrutura de objetossem estar limitado ao tipo de dados e linguagens complexos (classes) quanto as operações que podemde consulta dos sistemas tradicionais. Nele, o ser aplicadas a esses objetos (métodos).projetista tem o poder de especificar tanto a Segundo Silberschatz et. al. (2005), àestrutura de objetos complexos quanto as medida que as bases de dados foram sendo utilizadasoperações que podem ser aplicadas a eles. Com o por um número maior de aplicações, as limitaçõesintuito de mostrar os conceitos e relatar a impostas pelo modelo relacional tornaram-se umexperiência dos bancos de dados orientado a obstáculo. Como resultado, pesquisadores da área deobjetos, este trabalho apresenta o projeto Sistema bancos de dados inventaram novos modelos de dadosde Matrículas do curso de Bacharelado em que superassem as restrições do modelo relacional.Sistemas de Informação da UFGD. Para a Uma outra razão para o uso crescente de bancos derealização deste projeto, foram utilizados os dados OO, decorre-se do sucesso atual dasaplicativos NetBeans IDE 7.1 e Db4o 8.0. linguagens de programação OO, como JAVA, C++ ePalavras-Chave bancos de dados orientados a PHP no desenvolvimento de aplicações de software.objetos, Java, Db4o, Sistema de Matrículas. Para Chaudhri & Zicari (2000) e Dan Lo et. al. (2002), a oferta de bancos de dados OO temPalavras-Chave: bancos de dados orientados a aumentado, principalmente, por causa do crescimentoobjetos, Java, Db4o, Sistema de Matrículas. de uso da plataforma Java. O modelo de dados objeto-relacional (OR),1. Introdução por sua vez, é composto por tabelas e objetos. As Sistemas e modelos de dados tradicionais, tabelas representam as classes e cada registro de umacomo relacionais, de rede e hierárquicos, têm tido tabela representa uma instância da classemuito sucesso no desenvolvimento das tecnologias de correspondente, ou seja, um objeto. Para armazenarbanco de dados exigidas para muitas aplicações de os objetos no banco de dados é preciso utilizar umbanco de dados de negócios tradicionais. Porém, eles framework ii que faça o mapeamento OR (Hibernate,têm certas deficiências quando aplicações de bancos por exemplo). Esse mecanismo causa o que sede dados mais complexas precisam ser projetadas e costuma chamar de diferença de impedância OR.implementadas – por exemplo, bancos de dados para ―Diferença de impedância é uma definiçãoprojeto de engenharia e manufatura (CAD/CAM e procedente da engenharia elétrica e é usada na análiseCIMi), experimentos científicos, telecomunicações, de sistemas para identificar a inadequada ousistemas de informações geográficas e multimídia. excessiva capacidade de um sistema para se ajustar aEssas aplicações mais recentes possuem requisitos e outro‖ (AMBLER, 2006 apud LEONE, A.; CHENcaracterísticas que diferem daqueles das aplicações D., 2007).de negócios tradicionais, como estruturas mais A Figura 1 ilustra a diferença entre os modelos decomplexas para objetos armazenados; a necessidade dados OR e OO.de novos tipos de dados para armazenar imagens,vídeos, ou itens de texto grandes; transações de maiorduração; e a necessidade de definir operações fora dopadrão específicas da aplicação (ELMASRI, R.;NAVATHE, S. B., 2010). 540 | P a g e
  2. 2. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549 os conceitos e relatar a experiência dos bancos de dados OO. Os dados coletados foram baseados nos modelos da Unified Modeling Language (UML) utilizados para criar o projeto de banco de dados OO; e os resultados foram analisados com base na experiência pessoal dos participantes do estudo. 3. Conceitos de bancos de dados orientados a objetosFIGURA 1. Demonstração de armazenamento de Um banco de dados orientado a objetosdados: Banco de Dados OR versus OO. Fonte: DB4O (BDOO) é uma coleção de dados na forma de(2009). objetos, os quais só podem ser manipulados por A diferença de impedância OR é causada métodos definido para a classe a qual eles pertencem.pelo fato de que a lógica OO é baseada em princípios Os conceitos de BDOOs são os mesmos dasda engenharia de software que modelam os objetos linguagens de programação OO – a diferença está naconforme o domínio do problema, enquanto o persistência dos objetos. A persistência dos objetosmodelo relacional é baseado em princípios consiste no armazenamento de dados em memóriamatemáticos que organizam dados para tornar o secundária, de modo a garantir a permanência dasarmazenamento e a recuperação eficientes informações.(PATERSON, 2004). BDOOs são projetados para serem Nesse sentido, o presente trabalho apresenta integrados diretamente com aplicações que utilizam ao projeto de banco de dados OO – Sistema de linguagem de programação OO. Com isso, oMatrículas – do curso de Bacharelado em Sistemas armazenamento de objetos ocorre de formade Informação da Universidade Federal da Grande transparente, não existindo a necessidade de mapearDourados (UFGD). Isto permite conceituar os tipos código como no modelo OR. Além disso, BDOOsde dados da Linguagem de Definição de Objetos, são adequados para trabalhar com objetos complexos,Object Definition Language (ODL); apresentar a como imagens e textos longos.Linguagem de Consulta de Objetos, Object QueryLanguage (OQL); e descrever o acoplamento 3.1 Identidade de objeto, estrutura de objeto e(binding) com a linguagem Java. construtores de tipos O sistema de gerenciamento de banco de2. Metodologia dados orientado a objetos (SGBDOO) garante que Segundo GIL (2010), uma pesquisa pode ser cada objeto tenha uma identidade única gerada porclassificada em: exploratória, descritiva ou ele, o Identificador de Objeto, ou Object Identifierexplicativa. (OID). Para garantir que este OID seja único, ele nãoA pesquisa exploratória, aplicada neste trabalho, depende dos dados armazenados no objeto. O OIDenvolve o levantamento bibliográfico, o que não é visível aos usuários externos, mas é usado peloproporciona maior familiaridade com o problema, a sistema para identificar o objeto, criar e gerarfim de torná-lo mais explícito. referência entre eles.Com base em procedimentos técnicos, GIL (2010) Um modo formal de representar os objetosclassifica uma pesquisa de várias formas. Neste em bancos de dados OO é visualizar cada objetotrabalho são utilizadas as seguintes pesquisas: como uma tripla (i, c, v), na qual ―i‖ é o identificador Pesquisa bibliográfica – É desenvolvida com único do objeto (OID), ―c‖ é o construtor de tipo (elebase em material já elaborado, constituído indica como o estado do objeto é construído) e ―v‖ éprincipalmente de livros e artigos científicos. Esta o estado do objeto (ou valor corrente) (ELMASRI,pesquisa é a base para a obtenção dos conhecimentos R.; NAVATHE, S. B., 2005).científicos e técnicos para desenvolver o projeto de O modelo de dados normalmente incluibanco de dados OO, proposto por este trabalho. vários construtores de tipos. Os construtores de tipos Pesquisa-ação – Consiste em um tipo de mais comuns são atom, tuple, set, bag, list e array. Opesquisa com base empírica que é concebida e tipo atom é formado por um valor atômico, comorealizada em estreita associação com uma ação ou inteiros, números reais, cadeias de caracteres,com a resolução de um problema coletivo e no qual boleanos e outros tipos básicos que o sistema tenhaos pesquisadores e participantes representativos da suporte. Objetos do tipo tuple são construídos atravéssituação ou do problema estão envolvidos de modo da união de atributos, como tuplas (tipos de registro)cooperativo ou participativo. no modelo relacional básico. Por exemplo, um tipo Marconi (2007) informa que uma pesquisa estruturado que pode ser criado é: structquanto ao objeto pode ser classificada em: Nome<PrimeiroNome:string, InicialMeio: char,bibliográfica, de laboratório e de campo. Uma Sobrenome: string>.pesquisa de campo foi realizada com a Universidade Os construtores Set, Bag, List e Array sãoFederal da Grande Dourados (UFGD), para mostrar conhecidos como Tipos Coleção ou Tipos 541 | P a g e
  3. 3. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549Empilhados. Set e Bag são representados pelo adicionados a este conjunto, também se tornarãoconjunto de objetos, e formado pelo conjunto dos persistentes, pois estarão alcançáveis através de A.OIDs dos objetos referenciados. Set só aceita valores 3.3 Hierarquias de tipo e herançadistintos e, em Bag, os valores podem se repetir. Os Um banco de dados OO pode identificar os objetostipos List e Array também são formados por um que pertencem ao mesmo tipo (ou classe) e tambémconjunto de OIDs, mas são ordenados. A principal pode definir novos tipos com base nos tiposdiferença é que o tipo List comporta um número conhecidos.indeterminado de valores e, em Array, esta Quando um tipo é definido, através de umquantidade deve ser pré-estabelecida. tipo predefinido, pode-se chamá-lo de Subtipo; e o tipo que deu origem a ele de Supertipo. Um subtipo3.2 Encapsulamento de operações, métodos e herda todos os métodos e atributos que estejampersistência definidos para o seu supertipo, assim não há a O conceito de encapsulamento é uma das necessidade de definí-lo novamente – apenasprincipais características das linguagens e sistemas acrescenta-se os métodos e atributos necessários paraOO. Nos bancos de dados tradicionais, porém, ele o subtipo. Dessa forma, é possível criar umanão é aplicado, pois toda a estrutura do banco está hierarquia de tipos para mostrar os relacionamentosvisível e existem operações padronizadas que são de supertipo e subtipo entre todos os tipos declaradosaplicáveis a todos os tipos de objetos. Em BDOO este no sistema.conceito é aplicado separando os atributos emvisíveis e ocultos. Os Atributos Visíveis podem ser 3.4 Objetos complexosacessados diretamente, já os Atributos Ocultos só são Uma das grandes vantagens dos bancos deacessados através de métodos específicos para cada dados OO é a facilidade para lidar com Objetosobjeto, os quais são predefinidos pelo programador. Complexos. Os objetos complexos podem serAtributos visíveis e ocultos são semelhantes à divididos em estruturados e não estruturados.denominação de atributos public e private na Os objetos complexos Não-estruturados sãoprogramação OO. basicamente objetos que exigem grande espaço de Os métodos são utilizados para manipular os armazenamento, como imagens e textos longosdados ocultos do banco de dados, eles podem ser (documentos). São chamados de não-estruturados,utilizados para criar, destruir, recuperar, fazer pois o SGBDOO não conhece a sua estrutura.cálculos e atualizar os dados. Os softwares do SGBDOO não possuem Nas aplicações desenvolvidas em linguagens capacidade para processar diretamente condições dede programações OO os objetos são criados pelos seleção e outras operações baseadas em valoresconstrutores da classe que ele pertence, mas nem desses objetos, a não ser que a aplicação forneça otodos os objetos são armazenados no banco de dados. código para realizar as operações de comparaçãoOs objetos que, quando a aplicação é encerrada, necessárias para a seleção. Em um SGBDOO, issodeixam de existir, são chamados de Objetos pode ser obtido definindo-se o novo tipo de dadoTransientes. Porém, objetos transientes podem ser abstrato para os objetos não interpretados earmazenados no banco de dados e, a partir disso, fornecendo os métodos para seleção, comparação etornam-se Objetos Persistentes. apresentação desses objetos. Por exemplo, considere Há duas maneiras de tornar um objeto objetos que são imagens bitmap bidimensionais.transiente em persistente, por nomeação e por Suponha que a aplicação precise selecionar a partiralcançabilidade. de uma coleção de tais objetos somente aqueles que Persistência por Nomeação consiste em dar incluam certo padrão. Nesse caso, o usuário deveum nome persistente ao objeto; todos os nomes fornecer o programa de reconhecimento do padrão,devem ser únicos para cada objeto em um como um método em objetos do tipo bitmap. Odeterminado banco de dados; o nome persistente será SGBDOO recupera, então, um objeto do banco deutilizado para iniciar o acesso ao banco de dados. dados e aplica nele método para reconhecimento doComo não é interessante dar nomes únicos para todos padrão para determinar se o objeto adere ao padrãoos objetos em um grande banco de dados, devido à desejado (ELMASRI, R.; NAVATHE, S. B., 2005).grande quantidade de nomes que seriam necessários, Já os objetos complexos Estruturados têm suasa maioria dos objetos são persistidos através do estruturas conhecidas, pois são objetos derivados domecanismo de Alcançabilidade. Por meio deste uso recursivo dos construtores existentes, fornecidosmecanismo todos os objetos que forem alcançados pelo SGBDOO, formando assim, vários níveis deatravés de um objeto persistente também se tornam recursão.persistentes. Por exemplo, se existir um objeto A que Existem dois tipos de semântica paraé construído, através de um construtor Set que referenciar os objetos complexos e seus componentescontenha todos os objetos de uma classe B e, este de cada nível.objeto A for nomeado tornando-o persistente, todos A Semântica de Propriedade, ou ―é-parte-os objetos de B que fazem parte, ou forem de‖ e ―é-componente-de‖, os subobjetos são tratados como parte do objeto complexo. Dessa maneira, estes 542 | P a g e
  4. 4. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549subobjetos não possuem OIDs e tem que ser especificam um valor que corresponde a uma coleçãoacessados por métodos no objeto proprietário. Como de objetos ou de valores, mas a coleção propriamentesão parte do objeto proprietário, se este for excluído, dita não possui um OID.os subobjetos também serão. São considerados objetos atômicos todos os Na Semântica de Referência, ou ―é- objetos definidos pelo usuário que não sejam objetosassociado-com‖, os componentes dos objetos de coleção, desse modo também inclui objetoscomplexos são tratados como objetos independentes estruturados criados com o uso do construtor struct.que podem ser referenciados pelo objeto complexo. A maioria desses objetos serão estruturados,Sendo assim, os objetos que compõem o objeto possuirão uma estrutura complexa com várioscomplexo possuem os seus próprios OIDs e métodos. atributos, relacionamentos e operações, mas aindaAlém disso, não são excluídos se o objeto complexo assim, por não serem objetos coleção, serãofor excluído e, quando o objeto complexo precisar considerados objetos atômicos. Eles são definidosacessar seus dados, deve ser feito através de seus com o uso da palavra-chave class na ODL e possuemmétodos predefinidos. três componentes básicos: atributos, relacionamentos e operações.4. Padrões de Banco de Dados de Objetos Um Atributo é uma propriedade que Esta seção apresenta o padrão Object Data descreve algum aspecto de um objeto. AtributosManagement Group (ODMG). O padrão é composto possuem valores (os quais normalmente são literaispelos componentes: modelo de objetos, Object com uma estrutura simples ou complexa) que sãoDefinition Language (ODL) e Object Query armazenados dentro do objeto. Porém, os valores deLanguage (OQL), descritos a seguir. atributos também podem ser OIDs de outros objetos.4.1 O Modelo de Objetos ODMG Um Relacionamento é uma propriedade que O modelo de objetos ODMG fornece os especifica que dois objetos no banco de dados estãotipos de dados, os tipos construtores e outros relacionados. No modelo de objeto do ODMG,conceitos que podem ser utilizados na ODL para somente relacionamentos binários são representadosespecificar esquemas de bancos de dados de objetos. explicitamente, e cada relacionamento binário éAssim, ele deve fornecer um modelo de dados padrão representado por um par de referências inversaspara banco de dados orientados a objetos, da mesma especificadas por meio da palavra-chave relationship.forma que a SQL descreve um modelo de dados Além dos atributos e relacionamentos, o projetistapadrão para bancos de dados relacionais. pode incluir Operações nas especificações de tipo de No modelo de objetos ODMG, objetos e objeto (classe). Cada tipo objeto pode possuir umaliterais são os blocos de construção básicos do série de assinaturas de operação, que especificam omodelo de objetos. A principal diferença entre os nome da operação, seus tipos de argumento e seudois é que um objeto possui um OID e um estado (ou valor retornado, se for o caso. Os nomes de operaçãovalor atual), enquanto um literal possui somente um são exclusivos dentro de cada tipo de objeto, mas elesvalor, mas não um OID. podem ser sobrecarregados, fazendo que o mesmo Um Objeto é composto por identificador, nome de operação apareça em tipos de objetosnome, tempo de vida e estrutura. O Identificador é distintos. (ELMASRI, R.; NAVATHE, S. B., 2010).um componente que possui uma identificação únicapara o objeto em todo o banco de dados (OID). Todo 4.2 Object Definition Language (ODL) -objeto deve possuir um identificador. Opcionalmente, Linguagem de Definição de Objetospode ser dado um Nome único em todo o banco de A ODL é projetada para dar suporte àsdados para um objeto, pelo qual o sistema é capaz de construções semânticas do modelo de objeto ODMGlocalizá-lo – os nome são utilizados como ponto de e é independente de qualquer linguagem departida em um banco de dados OO. Localizando um programação em particular. Seu uso principal é paraobjeto pelo nome, o usuário pode localizar outros criar especificações de objetos — ou seja, classes eobjetos que são referenciados por ele. O Tempo de interfaces. Logo, a ODL não é uma linguagem deVida, por sua vez, define se os objetos são programação completa. Um usuário pode especificarpersistentes ou transientes. E a Estrutura especifica um esquema de banco de dados na ODLcomo ele é construído pelos construtores de tipos. A independentemente de qualquer linguagem deestrutura define se um objeto é atômico (inteiro, real, programação, e depois utilizar os bindings dacaracteres, boleanos, etc) ou coleção (set, bag, list e linguagem específica para indicar como asarray). construções ODL podem ser mapeadas em Um Literal é um valor que não possui um construções nas linguagens de programaçãoOID. Os literais podem ser atômicos, estruturados ou específicas, como C++, SMALLTALK e JAVAcoleção. Atômicos são aqueles valores de dados (ELMASRI, R.; NAVATHE, S. B., 2010).básicos e são predefinidos. Estruturados são aquelesvalores construídos a partir de tuplas, estruturasembutidas, como Date, Interval, Time e Timestamp, eestruturas definidas pelo usuário. Literais Coleção 543 | P a g e
  5. 5. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549 JAR/pasta.../db4o-8.0.184.15484-all-java5). Esse é o4.3 Object Query Language (OQL) - Linguagem único arquivo necessário para a aplicação comunicar-de Consulta de Objetos se com o banco de dados. A OQL foi projetada para trabalhar de perto Para demonstrar a manipulação dos objetos no bancocom as linguagens de programação para as quais um de dados será utilizada a classe Aluno a seguir.binding ODMG é definido, como C++, 1 public class Aluno {SMALLTALK e JAVA. Logo, uma consulta OQL 2 private int codigo;embutida em uma dessas linguagens de programação 3 private String nome;pode retornar objetos que combinam com o sistema 4 public Aluno(int codigo, Stringde tipos dessa linguagem. Além disso, as nome) {implementações de operações de classe em um 5 this.codigo = codigo;esquema ODMG podem ter seu código escrito nessas 6 this.nome = nome;linguagens de programação. A sintaxe OQL para 7 }consultas é semelhante à sintaxe da linguagem de 8 public int getCodigo(){consulta do padrão de consulta relacional, SQL, com 9 return codigo;recursos adicionais para os conceitos ODMG, como 10 }identidade de objeto, objetos complexos, operações, 11 public void setCodigo(int codigo){herança, polimorfismo e relacionamentos 12 this.codigo=codigo;(ELMASRI, R.; NAVATHE, S. B., 2010). 13 } 14 public String getNome(){5. Db4objects (Db4o) 15 return nome; O Db4objects (Db4o) é um banco de dados 16 }orientado a objetos, desenvolvido como projeto 17 public void setNome(String nome){software livre de código aberto (open-source), 18 this.nome=nome;projetado para aplicações do tipo embarcada, cliente- 19 }servidor e desktop. O banco de dados também é 20 public String toString(){distribuído em uma licença comercial. ―Um serviço 21 return "Código:" + codigobaseado em assinatura custa 1.200,00 dólares por + " Nome:" + nome;ano‖ (MITCHELL R. L., 2005). 22 } O Db4o permite armazenar os objetos 23 }diretamente no banco de dados, sem precisar utilizar Para abrir o banco de dados, a classecomandos SQL ou qualquer tipo de framework que Db4oEmbedded possui o método estático openFile().faça o mapeamento objeto-relacional. De acordo com No código abaixo, o método openFile() é o métodoo site do fabricande ―avaliações de banco de dados responsável por abrir o banco de dados banco.yapmostram que o Db4o pode ser até 44 vezes mais (linha 5). Caso o banco de dados não exista, ele irárápido que o Hibernate e MySQL, uma combinação criá-lo no caminho especificado. A interfacepopular de mapeador objeto-relacional e banco de ObjectContainer, por sua vez, fornece os métodosdados‖ (DB4OBJECTS, 2009). para armazenar, consultar, alterar e excluir objetos. Empresas como a Bosch, Hertz, BMW, Dentro do bloco de código try (linhas 6 a 8) serãoIntel, Seagate entre outras, utilizam o Db4o. São realizadas as operações CRUD.inúmeras as vantagens em relação ao banco de dados 1 import com.db4o.Db4oEmbedded;relacional: o banco de dados é nativo em Java ou 2 import com.db4o.ObjectContainer;.Net, oferece rapidez de inserção e consulta 3 public class Main {(processamento de 200 mil objetos por segundo), 4 public static void main(String[]utiliza pouco recurso computacional, tem fácil args) {aprendizado, não possui nenhuma linha de código 5 ObjectContainer db =SQL para Create, Read, Update e Delete (CRUD), e Db4oEmbedded.openFile("c:/banco.yap");disponibiliza acesso direto ao banco de dados sem 6 try {utilizar mapeamento objeto-relacional (GUERRA, 7 // Códigos para as2007). operações CRUD. 8 } finally {5.1 Operações CRUD 9 db.close(); A seguir serão demonstradas as operações 10 }Create, Read, Update e Delete para a manipulação de 11 }objetos no Db4O. Maiores detalhes podem ser 12 }observados em (DB4OBJECTS, 2011). No código abaixo é realizada a operação de Para configurar o banco de dados Db4O 8.0 inserção. Para isso, é instanciado um objeto da classecrie um novo projeto no NetBeans IDE 7.1 e adicione Aluno, definido através do construtor. Paraa biblioteca db4o-8.0.184.15484-all-java5 à sua armazenar o aluno no banco de dados é necessárioaplicação (exemplo: Bibliotecas/Adiocionar passar o objeto como parâmetro para o método 544 | P a g e
  6. 6. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549store() (linha 8). 13 } finally {1 import com.db4o.Db4oEmbedded; 14 db.close();2 import com.db4o.ObjectContainer; 15 }3 public class Main { 16 }4 public static void main(String[] 17 }args) { No código abaixo é realizada a operação de5 ObjectContainer db = alteração. Para isso, é necessário utilizar o métodoDb4oEmbedded.openFile("c:/banco.yap"); store() para alterar o objeto no banco de dados. O6 try { Db4o é capaz de identificar se o objeto existe no7 Aluno novo = new banco de dados para ser alterado, caso contrário, eleAluno(1, "Danilo Pedroso"); irá armazenar um novo objeto no banco de dados.8 db.store(novo); 1 import com.db4o.Db4oEmbedded;9 2 import com.db4o.ObjectContainer; System.out.println("Aluno armazenado: " + 3 import com.db4o.ObjectSet;novo); 4 public class Main {10 } finally { 5 public static void main(String[]11 db.close(); args) {12 } 6 ObjectContainer db=13 } Db4oEmbedded.openFile("c:/banco.yap");14 } 7 try {Como resultado do código acima, têm-se como saída: 8 ObjectSet<Aluno> lista =Aluno armazenado: Código: 1 Nome: Danilo db.queryByExample (new Aluno (1,"DaniloPedroso. 9 Pedroso")); Para recuperar objetos no Db4o, existem três 10 Aluno aluno =formas possíveis: através da Query-By-Example lista.next();(QBE), Native Queries (NQ) e Simple Object Data 11Access (SODA) (DB4OBJECTS, 2011). A seguir, aluno.setNome("Danilo Pedroso Vargas");será demonstrado como recuperar objetos através da 12 db.store(aluno);QBE. 13 lista =Conforme Parsaye el al. (1989) ―a QBE foi projetada db.queryByExample (Aluno.class);para que consultas fossem construídas 14 whileinterativamente‖. Ela permite realizar uma consulta (lista.hasNext()){em que o usuário especifica os valores dos atributos 15que ele deseja que sejam recuperados, construindo System.out.println(lista.next());um exemplo da operação desejada. 16 }Por exemplo, o código abaixo seleciona todos os 17 } finally {alunos com o nome Danilo Pedroso, independente do 18 db.close();número de seu código (atributo). Neste caso, deve-se 19 }utilizar o valor zero para o atributo código, de forma 20 }que este não precise ser especificado – zero é o valor 21 }padrão para números inteiros. No código acima, primeiro é selecionado o1 import com.db4o.Db4oEmbedded; aluno Danilo Pedroso de código 1 (linhas 8 e 9).2 import com.db4o.ObjectContainer; Logo após, é possível recuperar o aluno para ser3 import com.db4o.ObjectSet; alterado (linha 10). Depois disso, é alterado o nome4 public class Main { do objeto aluno para Danilo Pedroso Vargas (linha5 public static void main(String[] 11). Na linha 12 o banco de dados é atualizado.args) { Finalmente, é mostrado o resultado da alteração nas6 ObjectContainer db = linhas 13 a 16.Db4oEmbedded.openFile("c:/banco.yap"); O processo de exclusão é semelhante ao de7 try { atualização. Primeiro retira-se o objeto do banco,8 Aluno novo = new depois aplica-se o método delete():Aluno(0,"Danilo Pedroso"); 1 import com.db4o.Db4oEmbedded;9 2 import com.db4o.ObjectContainer; ObjectSet<Aluno> lista = 3 import com.db4o.ObjectSet;db.queryByExample (novo); 4 public class Main {10 while 5 public static void main(String[](lista.hasNext()){ args) {11 6 ObjectContainer db= System.out.println(lista.next()); Db4oEmbedded.openFile("c:/banco.yap");12 } 7 try { 545 | P a g e
  7. 7. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-5498 ObjectSet<Aluno> lista = 1 public class Aluno {db.queryByExample (new Aluno (1,"Danilo 2 private int codigo;9 Pedroso Vargas")); 3 private String nome;10 Aluno aluno = 4 private Curso curso;lista.next(); 5 public Aluno(int codigo, String11 db.delete(aluno); nome) {12 lista = 6 this.codigo = codigo;db.queryByExample (Aluno.class); 7 this.nome = nome;13 while 8 }(lista.hasNext()){ 9 public int getCodigo(){14 10 return codigo; System.out.println(lista.next()); 11 }15 } 12 public void setCodigo(int codigo){16 } finally { 13 this.codigo=codigo;17 db.close(); 14 }18 } 15 public String getNome(){19 } 16 return nome;20 } 17 } No código acima, primeiro é selecionado o 18 public void setNome(String nome){aluno Danilo Pedroso de código 1 (linha 8 e 9). Logo 19 this.nome=nome;após, é possível recuperar o aluno para ser excluído 20 }(linha 10). Depois disso, é excluído o objeto aluno do 21 public Curso getCurso() {banco de dados (linha 11). Finalmente, é mostrado o 22 return curso;resultado nas linhas 12 a 15. 23 } Para armazenar objetos relacionados, utiliza- 24 public void setCurso(Curso curso) {se o método store() no objeto que determina a 25 this.curso = curso;relação entre objetos. Por exemplo, para armazenar o 26 }curso de um determinado aluno é preciso armazenar 27 public String toString(){apenas o objeto aluno, pois curso é uma variável de 28 return "Código:" + codigoaluno. Para isso, deve-se modificar a classe aluno, + " Nome:" + nome + "n" + "Curso:"+adicionando um relacionamento entre as classes 29 curso.getNome();Aluno e Curso. A seguir, segue a nova classe Curso e 30 }a classe Aluno alterada. 31 }1 public class Curso {2 private String nome; O código abaixo armazena os objetos3 private String periodo; relacionados aluno e curso utilizando, para isso, o4 public Curso(String nome, String método store(). Primeiro são criados o objeto alunoperiodo) { Danilo Pedroso Vargas de código 1 (linha 8) e o5 this.nome = nome; objeto curso Sistema de Informação, período Noturno6 this.periodo = periodo; (linha 9). Logo após, o objeto curso é relacionado ao7 } objeto aluno (linha 10). Depois disso, é atualizado o8 public String getNome(){ banco de dados (linha 11).9 return nome; 1 import com.db4o.Db4oEmbedded;10 } 2 import com.db4o.ObjectContainer;11 public void setNome(String nome){ 3 import com.db4o.ObjectSet;12 this.nome=nome; 4 public class Main {13 } 5 public static void main(String[]14 public String getPeriodo(){ args) {15 return periodo; 6 ObjectContainer db=16 } Db4oEmbedded.openFile("c:/banco.yap");17 public void setPeriodo(String 7 try {periodo){ 8 Aluno aluno =18 this.periodo=periodo; new Aluno(1,"Danilo Pedroso Vargas");19 } 9 Curso curso =20 public String toString(){ new Curso("Sistemas de Informação","Noturno");21 return "Nome:" + nome + " 10Periodo:" + periodo; aluno.setCurso(curso);22 } 11 db.store(aluno);23 } 12 } finally { 13 db.close(); 546 | P a g e
  8. 8. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-54914 } análise de requisitos, foi definida a seguinte descrição15 } do minimundo – a parte do sistema que será16 } representada no banco de dados:Para recuperar objetos relacionados, utiliza-se o  O Coordenador do curso de BSI define asmétodo query(). O código abaixo recupera o curso ao disciplinas que serão ofertadas no curso em umqual o aluno Danilo Pedroso Vargas pertence. determinado semestre letivo.1 import com.db4o.Db4oEmbedded;  Diversas disciplinas podem ser ofertadas no2 import com.db4o.ObjectContainer; curso de BSI.3 import com.db4o.ObjectSet;  Mais de uma turma pode ser aberta para uma4 import com.db4o.query.Query; mesma disciplina.5 public class Main {  Discentes selecionam as disciplinas e se6 public static void main(String[] matriculam nas turmas, conforme os horáriosargs) { disponíveis.7 ObjectContainer db=  Docentes usam o sistema para obter a listaDb4oEmbedded.openFile("c:/banco.yap"); de alunos matriculados nas disciplinas que ministram8 try { aulas.9 Query query =  Todos os usuários do sistema devem serdb.query(); validados com login e senha.10 6.2 Principais Funcionalidades query.constrain(Aluno.class);  Requisito funcional 1: Matricular o11 discente: o sistema deve permitir que o discente query.descend("nome").constrain("Danilo matricule-se nas disciplinas ofertadas pelo curso ePedroso Vargas"); deve impedir que haja colisão de horários entre as12 Aluno aluno = disciplinas ofertadas.(Aluno) query.execute().next();  Requisito funcional 2: Aprovar matrícula:13 System.out.println o sistema deve permitir que o coordenador do curso(aluno.getCurso()); aprove a matrícula realizada pelo discente. Somente14 } finally { após a aprovação do coordenador, o aluno é15 db.close(); adicionado nas turmas ofertadas.16 }  Requisito funcional 3: Retirar o discente de17 } uma turma: o sistema deve permitir ao coordenador18 } do curso retirar o discente de uma determinada turma.  Requisito funcional 4: Imprimir os6. Projeto de banco de dados OO com Java e discentes matriculados em uma turma: o sistema deveDb4o exibir ao docente a listagem dos discentes Esta seção apresenta o projeto de banco de matriculados em uma determinada turma.dados OO para o Sistema de Matrículas do curso de  Requisito funcional 5: Imprimir os horáriosBacharelado em Sistemas de Informação (BSI) da do discente: o sistema deve exibir ao discente, osUFGD. Para a realização deste projeto, foram horários das disciplinas que ele possui aula.utilizados os seguintes aplicativos: 6.3 Diagrama de Caso de uso NetBeans IDE 7.1, disponível em O diagrama de caso de uso representa as principais(NETBEANS, 2012). funcionalidades do sistema (OMG, 2011). A Figura 2 Banco de dados OO Db4o 8.0, disponível apresenta o diagrama de caso de uso do Sistema deem (DB4OBJECTS, 2012). Matrículas. Java SE Development Kit (JDK) 7u2,disponível em (ORACLE, 2012).6.1 Descrição de requisitos O curso de BSI da UFGD desejainformatizar o seu sistema de matrículas para umaabordagem de banco de dados orientado a objetos.Com isso, será possível especificar tanto a estruturade objetos complexos, quanto às operações quepodem ser aplicadas à esses objetos, sem estarlimitado ao tipo de dados e linguagens de consultadisponíveis em sistemas de banco de dadostradicionais. FIGURA 2 – Diagrama de Caso de Uso do SistemaO banco de dados UFGD registra o coordenador, os de Matrículas.docentes, os discentes, as disciplinas e as turmas docurso de BSI. Depois da fase de levantamento e 547 | P a g e
  9. 9. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-5496.4 Diagrama de Classe armazenamento no banco de dados. No Db4o asO diagrama de classe representa a estrutura e as modificações são transparentes não existindo arelações das classes (OMG, 2011). A Figura 3 necessidade de reestruturação, o que diminuiapresenta o diagrama de classe do Sistema de consideravelmente o tempo de implementação eMatrículas. manutenção no banco de dados. Espera-se, com isso, que o Projeto de banco de dados OO apresentado, venha contribuir com o desenvolvimento de novos projetos de software que utilizem a abordagem de banco de dados OO. 8. Referências 1. AMBLER, S. W. The Object-Relational Impedance Mismatch. Ambysoft Inc, 2006. Disponível em: http://www.agiledata.org/essays/impedance Mismatch.html. Acesso em: 18 jan. 2012. 2. CHAUDHRI, A. B; ZICARI, R. Succeeding with Object Databases: A Practical Look at Todays Implementations with Java and XML. Wiley, 2000. 464p. 3. DAN LO, C. T; CHANG, M.; FRIEDER, O.; GROSSMAN, D. The Object Behavior of Java Object-Oriented Database Management Systems. Information Technology: Coding and Computing, 2002. Proceedings. 247-253p. 4. DB4OBJECTS. Db4o 8.0 for Java. 2012. Disponível em:FIGURA 3 – Diagrama de Classes do Sistema de http://www.db4o.com/Download-Now.aspx.Matrículas. Acesso em: 06 jan. 2012. 5. DB4OBJECTS. Db40 - Banco de objetos de6.5 Implementação código aberto. 2009. Disponível em:O código-fonte do Sistema de Matrículas está http://www.db4o.com/portugues/db4o%20Prdisponível para download em (UFGD, 2012). oduct%20Information%20V5.0(Portuguese). pdf Acesso em: 06 out. 2011.7. Conclusão 6. DB4OBJECTS. Db4o tutorial. 2011. Este trabalho apresentou o projeto de banco Disponível em:de dados OO para o Sistema de Matrículas do curso http://community.versant.com/Docu-de Bacharelado em Sistemas de Informação da mentation/Reference/db4o-8.0/java/tutorial.UFGD. Acesso em: 27 de outubro de 2011. O projeto de banco de dados OO foi definido 7. ELMASRI, R.; NAVATHE, S. B. Sistemascom base nos aplicativos Db4o 8.0 e Netbeans IDE de Banco de Dados. 4. ed., São Paulo:7.1. A partir da combinação dos aplicativos, Pearson Addison Wesley, 2005. 724p.verificou-se que ambos mantêm uma correspondência 8. ELMASRI, R.; NAVATHE. Sistemas deentre os conceitos usados no programa e sua Banco de Dados. 6. ed., São Paulo: Pearsonrepresentação no banco de dados – os modelos de Addison Wesley, 2010. 788p.dados adotados no Db4o e no Java são idênticos. 9. FAYAD, M. E.; SCHMIDT, D. C. Object-Segundo Elmasri e Navathe (2010), os bancos de oriented Application frameworks.dados OO são projetados de modo que possam ser Communications of the ACM, vol. 40, 10 p.,integrados diretamente – ou transparentemente – ao 1997.software desenvolvido usando linguagens de 10. GIL, A. C. Como elaborar projetos deprogramação OO. pesquisa? 5. ed., São Paulo: Atlas, 2010. Uma pesquisa-ação foi proposta para 200 p.mostrar os conceitos dos bancos de dados OO, 11. GUERRA, Glaucio. DB4Objects na terra deexperimentar as ações do projeto de banco de dados gigantes do BD relacional com Java - ParteOO e relatar a experiência. Os resultados I. SQL Magazine, 2007. Disponível em:demonstraram que a principal vantagem encontrada http://www.devmedia.com.br/articles/view-no projeto de banco de dados OO é a facilidade de comp.asp?comp=4121. Acesso em: 05 deespecificar mudanças à medida que elas ocorram; ou novembro de 2011.criar novas classes, sem ter que se preocupar com o 548 | P a g e
  10. 10. Prof. Everton Castelão Tetila / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 5, September- October 2012, pp.540-549 12. LEONE, A.; CHEN D. Implementation of an object oriented data model in an information system for water catchment management: Java JDO and Db4o Object Database. Environmental Modelling & Software. vol. 22, p.1805-1810, 2007. 13. MARCONI, M. A. Metodologia do Trabalho Científico. 7. ed., São Paulo: Atlas, 2007. 225 p. 14. MITCHELL R. L. Db4o Database Upgrade Debuts. Computerworld, 30 p., 2005. 15. NETBEANS. NetBeans IDE 7.1. 2012. Disponível em: http://netbeans.org/downloads. Acesso em: Acesso em: 06 jan. 2012. 16. OMG. OBJECT MANAGEMENT GROUP. OMG Unified Modeling LanguageTM (OMG UML), Superstructure. 2011. versão 2.4.1. Disponível em: http://www.omg.org/spec/UML/2.4.1/Supers tructure/PDF/. Acesso em: 08 out. 2011. 17. ORACLE. Java SE Development Kit (JDK) 7u2. Disponível em: http://www.oracle.com/technetwork/java/jav ase/downloads/index.html. Acesso em: 06 out. 2011. 18. PARSAYE, K.; CHIGNELL M.; KHOSHAFIAN S.; WONG H. Intelligent databases: object-oriented, deductive hypermedia technologies. New York: John Wiley & Sons, 1989. 19. PATERSON, Jim. Simple Object Persistence with the db4o Object Database. O’Reilly, Sebastopol, California, 2004. Disponível em: http://onjava.com/pub/a/onjava/2004/12/01/ db4o.html. Acesso em: 17 jan. 2012. 20. SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Database System Concepts. 5. ed., McGraw-Hill, 2005. 1168p. 21. UFGD. Sistema de Matrículas. Disponível em: http://www.do.ufgd.edu.br/evertontetila- /sistemaMatriculas.zip. Acesso em: 07 jan. 2012.i Computer-Aided Design/Computer-AidedManufacturing (projeto auxiliado porcomputador/fabricação auxiliada por computador) eIntegrated Manufacturing (fabricação integrada aocomputador).ii Frameworks representam uma estrutura formadapor blocos pré-fabricados de software que osprogramadores podem usar, estender ou adaptar parauma solução específica e linguagens de padrões(FAYAD, M. E.; SCHMIDT, D. C., 1997). 549 | P a g e

×