1 / 56

Bancos de Dados Objeto-relacional e Orientados a Objetos Aula6: DB4O Por:

Bancos de Dados Objeto-relacional e Orientados a Objetos Aula6: DB4O Por: Robson do Nascimento Fidalgo Maria Carolina Torres da Silva rdnf@cin.ufpe.br mcts@cin.ufpe.br. Motivação. A Orientação a Objetos é uma tendência.

hali
Télécharger la présentation

Bancos de Dados Objeto-relacional e Orientados a Objetos Aula6: DB4O Por:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bancos de Dados Objeto-relacional e Orientados a Objetos Aula6: DB4O Por: Robson do Nascimento Fidalgo Maria Carolina Torres da Silva rdnf@cin.ufpe.br mcts@cin.ufpe.br

  2. Motivação • A Orientação a Objetos é uma tendência. • Conceitos fundamentados • Abstração máxima • Aprendizado rápido • Aumentar a produtividade • Diminuir a dependência da camada de persistência • ...

  3. DB4O – Visão Geral • Conceitos básicos • Consultas • Objetos Complexos • Coleções e arrays • Herança • Transações • Conhecimentos extras • Conclusões • Referências

  4. DB4O - Introdução • Não é um SGBD • Utiliza arquivo para armazenamento • Suportado nas plataformas: • Java • .NET Framework • Free • Orientação a Objetos PURA • ...

  5. DB4O Aprendendo o básico

  6. DB4O – Aprendendo o básico • Operações básicas: • Abrir e fechar a base • Armazenar na base • Consultar itens, com ou sem restrição • Alterar e remover um item já existente na base • Metodologia • Aplicação em um exemplo

  7. DB4O – Aprendendo o básico • Objeto a ser persistido: Piloto

  8. DB4O – Aprendendo o básico • Abrir a base de dados • Sintaxe • Objeto ObjectContainer • Representa a base de dados • Interface abstrata • Métodos básicos • Observação:arquivo de qualquer extensão • Dar preferência a arquivos vazios inicialmente. ObjectContainer base = Db4o.openFile(<nome do arquivo>);

  9. DB4O – Aprendendo o básico • Fechar a base de dados • Sintaxe • Aplicação básica (abrir e fechar a base): base.close(); ObjectContainer base = Db4o.openFile(<nome do arquivo>); try { // Realiza a operações necessárias }finally{ db.close(); }

  10. DB4O – Aprendendo o básico • Aplicação • util.Conectividade • util.Repositorio

  11. DB4O – Aprendendo o básico • Armazenar na base • Chamar o método store • Passar o objeto a ser persistido como parâmetro • Sintaxe: Objectobj = newObject(); ObjectContainerbase = Db4o.openFile(<nome do arquivo>); try { base.store(obj); }finally{ db.close(); }

  12. DB4O – Aprendendo o básico • Armazenar na base (cont.) • Aplicação:

  13. DB4O – Aprendendo o básico • Consultar a base • Querybyexample (QBE) • Forma mais fácil de se familiarizar • NativeQueries (NQ) • Interface principal para consultas • SODA Query API (SODA) • Forma mais avançada

  14. DB4O – Aprendendo o básico • Consultar a base (cont.) • Querybyexample (QBE) • Cria um protótipo do que se deseja consultar • Retorna todos os objetos do mesmo tipo que contenham os mesmos valores dos campos do protótipo • Resultado abstraído no tipo ObjectSet • Estende de java.util.List e java.util.Iterator • Pode ser parametrizado

  15. DB4O – Aprendendo o básico • Consultar a base (cont.) • Querybyexample (QBE) (cont.) • Consultar todos os objetos de um tipo • Protótipo vazio! • .class

  16. DB4O – Aprendendo o básico • Consultar a base (cont.) • Querybyexample (QBE) (cont.) • Consultar todos os objetos de um tipo impondo uma restrição • Protótipo restrito

  17. DB4O – Aprendendo o básico • Atualizar a base • Simples como armazenar • Resgatar o objeto que se deseja alterar • Realizar a alteração desejada • Chamar o método store com esse objeto como parâmetro • Observação:é necessário realizar o resgate inicial antes da alteração. • Caso isso não seja feito, ao chamar o método store um novo objeto será inserido na base.

  18. DB4O – Aprendendo o básico • Atualizar a base (cont.) • Aplicação:

  19. DB4O – Aprendendo o básico • Remover da base • Simples como armazenar e alterar • Resgatar o objeto que se deseja remover • Chamar o método delete com esse objeto como parâmetro • Observação:é necessário realizar o resgate inicial antes da remoção. Um protótipo não é suficiente.

  20. DB4O Consultando...

  21. DB4O – Consultando... • Disponibiliza três formas para consulta: • Query-By-Example (QBE): maisapropriadaparausuáriosnovatosem DB4O. • Native Queries (NQ): principal interface pararealização de consultas, recomenda-se seuuso. • SODA:usomaisavançado, provendomaiordinamismonageração de consultas, jáque NQ é fortementetipada.

  22. DB4O – Consultando... • Querybyexample • Já visto anteriormente • Uso de protótipos/templates • Limitações: • Validação com todos os campos do objeto, exceto os que possuírem valores default. • O preenchimento dos campos força uma combinação de cláusulas AND na nossa consulta. • Consultas mais complexas não são possíveis (AND, NOT, OR, etc.) • Não pode filtrar as consultas usando valores defaults, já que os mesmos são interpretados como não restritivos • ...

  23. DB4O – Consultando... • NativeQueries • Recomendação para consultas a partir de uma aplicação • Usa semântica da linguagem de programação utilizada • Altamente organizada • Escolha segura para o futuro • Aceita em qualquer plataforma suportada por DB4O • Uso de predicados para filtrar o retorno • Aplicação: inicial.base.piloto.RepositorioPilotoNQ.java

  24. DB4O – Consultando... • NativeQueries (cont.) • Aplicação:

  25. DB4O – Consultando... • NativeQueries (cont.) • Para realizar pesquisas mais complexas, o caminho já se mostra óbvio. • Aplicação:

  26. DB4O – Consultando... • SODA Query API • É a API de consulta mais baixo nível de DB4O • Acessa diretamente os nós do grafo da consulta • Utiliza string para identificar campo • Não fornece segurança de tipo • Nem checagem em tempo de compilação • É um pouco complicado de escrever • Tentou-se trocar NativeQueries por SODA • Nem todas as consultas puderam ser convertidas • Para a grande maioria das aplicações, NativeQueriesé a melhor interface de consulta.

  27. DB4O – Consultando... • SODA Query API (cont.) • Criar um objeto Query • Métodos básicos de uma consulta • Ordenação • Adicionar restrições • ... • Troca os protótipos utilizados em QBE para uma meta-descrição dos objetos que se deseja retornar. • Um grafo de consulta é montado com os nós e restrições. • Cada nó é preenchido por um objeto candidato • Cada restrição define se inclui ou exclui o candidato do resultado • Aplicação: inicial.base.pilotoRepositorioPilotoSODA

  28. DB4O – Consultando... • SODA Query API (cont.) • Aplicação: • Qualquer candidato da classe Piloto será agregado ao resultado. Class: Piloto

  29. DB4O – Consultando... • SODA Query API (cont.) • Aplicação: • Qualquer candidato da classe Piloto, que possua a quantidade de pontos determinada pelo parâmetro será agregado ao resultado. Class: Piloto pontos Equals: qtdePontos

  30. DB4O Objetos complexos

  31. DB4O – Objetos complexos • Aplicação:

  32. DB4O – Objetos complexos • Armazenamento: • Aplicação: Observação:Insere o carro e o piloto do carro, exceto se o piloto relacionado com o carro tenha sido trazido da base. • Consultas (QBE , NativeQueries, SODA API): • Aplicação: inicial.base.carro.RepositorioCarro.java

  33. DB4O – Objetos complexos • Atualização: • Aplicação: inicial.base.carro.RepositorioCarro.java • Em algumas situações, a base não terá sido alterada • Sessões diferentes com objetos carregados em memória. • Para solucionar esse problema Db4o.configure().objectClass(<nome completa da classe>) .cascadeOnUpdate(true);

  34. DB4O – Objetos complexos • Remoção: • Aplicação: inicial.base.carro.RepositorioCarro.java • Em algumas situações, é necessário que todos os objetos sejam apagados • Exemplo: sempre que um carro for apagado do sistema, seu piloto também deve ser • Isso não é feito automaticamente! • Para solucionar esse problema: Db4o.configure().objectClass(<nome completa da classe>) .cascadeOnDelete (true);

  35. DB4O – Objetos complexos • Remoção (cont.): • CUIDADO: • Ao se deletar um objeto, todos os que dependem dele são apagados automaticamente. • DB4O não realiza nenhuma verificação! • Se um piloto é deletado, todos os carros que ele dirige também serão deletados sem que haja nenhum alerta.

  36. DB4O Coleções e arrays

  37. DB4O – Coleções e arrays • Algumas relações são melhores modeladas com coleções ou arrays. • DB4O dá suporte a ambos! • Aprenderemos: • Armazenar • Consultar • Atualizar • Deletar

  38. DB4O – Coleções e arrays • Array • Aplicação: avancado.dados.LeitorSensor.java • Coleções • Aplicação: avancado.dados.CarroAvancado.java

  39. DB4O – Coleções e arrays • Armazenamento, Consultas, Atualização e Remoção • Aplicação: avancado.base.RepositorioCarroAvancadoeavancado.base.RepositorioLeitorSensor

  40. DB4O – Coleções e arrays • Consultas (QBE) Observação 1:Tentar buscar uma lista com protótipo sem instanciar o objeto que o possui, funciona! Observação 2:Tentar buscar array com protótipo não funciona sem instanciar o objeto que o possui.

  41. DB4O Herança

  42. DB4O - Herança • Melhora entendimento e reuso do código • Aplicação: heranca.dados.LeitorTemperatura, heranca.dados.LeitorPressaoe heranca.dados.LeitorSensorHeranca • CUIDADO com uso de classes abstratas ou interfaces nas consultas • Consultas:heranca.base.RepositorioLeitoresHeranca • Inserção, Atualização e remoção • sem nenhuma alteração

  43. DB4O Transações

  44. DB4O – Transações • Acesso concorrente ao uma única base • DB4O provê um mecanismo de transação • Commit • Rollback • Commit e Rollback • Sempre age dentro de uma transação • Implicitamente iniciada quando abre-se a base • E implicitamente finalizada quando fecha-se a base

  45. DB4O – Transações • Rollback • Cuidado com objetos alterados, mas não armazenados. • Aplicação: MainTransacao.java • Objeto ExtObjectContainer • Retorna o estado do objeto para o estado antes do rollback

  46. DB4O Conhecimentos extras

  47. DB4O – Conhecimentos extras • Alguns outros tópicos, não abordados aqui • Grafos profudos • Indexes • Otimização de NativeQueries • Ids • Funcionamento do DB4O num arquitetura cliente/servidor • ...

  48. DB4O Para finalizar...

  49. DB4O – Considerações Finais • Vantagens • Aprendizado rápido • Produtividade máxima • Custo mínimo • Java • Biblioteca open-source • IDE free • Independência da equipe de BD • ...

More Related