A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 1.

Apresentações semelhantes


Apresentação em tema: "Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 1."— Transcrição da apresentação:

1 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 1

2 2 Bancos de Dados Objeto-relacional e Orientados a Objetos Aula6: DB4O Por: Robson do Nascimento Fidalgo Maria Carolina Torres da Silva

3 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 3 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...

4 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 4 DB4O – Visão Geral Conceitos básicos Consultas Objetos Complexos Coleções e arrays Herança Transações Conhecimentos extras Conclusões Referências

5 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O - Introdução Não é um SGBD Utiliza arquivo para armazenamento Suportado nas plataformas: Java.NET Framework Free Orientação a Objetos PURA... 5

6 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 6

7 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

8 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Objeto a ser persistido: Piloto 8

9 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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. 9 ObjectContainer base = Db4o.openFile( );

10 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Fechar a base de dados Sintaxe Aplicação básica (abrir e fechar a base): 10 ObjectContainer base = Db4o.openFile( ); try { // Realiza a operações necessárias }finally { db.close(); } base.close();

11 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Aplicação util.Conectividade util.Repositorio 11

12 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Armazenar na base Chamar o método store Passar o objeto a ser persistido como parâmetro Sintaxe: 12 Object obj = new Object(); ObjectContainer base = Db4o.openFile( ); try { base.store(obj); }finally { db.close(); }

13 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Armazenar na base (cont.) Aplicação: 13

14 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Consultar a base Query by example (QBE) Forma mais fácil de se familiarizar Native Queries (NQ) Interface principal para consultas SODA Query API (SODA) Forma mais avançada 14

15 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Consultar a base (cont.) Query by example (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

16 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Consultar a base (cont.) Query by example (QBE) (cont.) Consultar todos os objetos de um tipo Protótipo vazio!.class 16

17 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Consultar a base (cont.) Query by example (QBE) (cont.) Consultar todos os objetos de um tipo impondo uma restrição Protótipo restrito 17

18 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

19 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Aprendendo o básico Atualizar a base (cont.) Aplicação: 19

20 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

21 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 21

22 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Consultando... Disponibiliza três formas para consulta: Query-By-Example (QBE): mais apropriada para usuários novatos em DB4O. Native Queries (NQ): principal interface para realização de consultas, recomenda-se seu uso. SODA: uso mais avançado, provendo maior dinamismo na geração de consultas, já que NQ é fortemente tipada. 22

23 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Consultando... Query by example 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

24 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Consultando... Native Queries 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

25 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Consultando... Native Queries (cont.) Aplicação: 25

26 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Consultando... Native Queries (cont.) Para realizar pesquisas mais complexas, o caminho já se mostra óbvio. Aplicação: 26

27 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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 Native Queries por SODA Nem todas as consultas puderam ser convertidas Para a grande maioria das aplicações, Native Queries é a melhor interface de consulta. 27

28 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

29 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Consultando... SODA Query API (cont.) Aplicação: Qualquer candidato da classe Piloto será agregado ao resultado. 29 Class: Piloto

30 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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. 30 Class: Piloto Equals: qtdePontos pontos

31 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 31

32 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Objetos complexos Aplicação: 32

33 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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, Native Queries, SODA API): Aplicação: inicial.base.carro.RepositorioCarro.java 33

34 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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 34 Db4o.configure().objectClass( ).cascadeOnUpdate(true);

35 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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: 35 Db4o.configure().objectClass( ).cascadeOnDelete (true);

36 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

37 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 37

38 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

39 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Coleções e arrays Array Aplicação: avancado.dados.LeitorSensor.java Coleções Aplicação: avancado.dados.CarroAvancado.java 39

40 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Coleções e arrays Armazenamento, Consultas, Atualização e Remoção Aplicação: avancado.base.RepositorioCarroAvancado e avancado.base.RepositorioLeitorSensor 40

41 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

42 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 42

43 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O - Herança Melhora entendimento e reuso do código Aplicação: heranca.dados.LeitorTemperatura, heranca.dados.LeitorPressao e 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

44 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 44

45 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

46 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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

47 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 47

48 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Conhecimentos extras Alguns outros tópicos, não abordados aqui Grafos profudos Indexes Otimização de Native Queries Ids Funcionamento do DB4O num arquitetura cliente/servidor... 48

49 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 49

50 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 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... 50

51 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Considerações Finais Desvantagens SQL não existe Não é um SGBD Dados armazenados em um arquivo qualquer Falta de segurança Nenhum poder de recuperação... Controle manual Alto poder ao desenvolvedor 51

52 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Considerações Finais Resumindo... Para aplicações simples, uma boa opção! Para aplicações complexas, de grandes empresas... Melhor repensar seu uso Precisa amadurecer para ganhar o mercado Academicamente interessante 52

53 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Considerações Finais Configuração para desenvolvimento Tutorial completo de instalação Desde o eclipse até a configuração do projeto Ainda não finalizado 53

54 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O 54

55 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo DB4O – Referências DB4O - Site oficial DB4O – Tutorial 55

56 Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 56


Carregar ppt "Bancos de Dados Relacional-objeto e Orientados a Objetos - Prof. Robson Fidalgo 1."

Apresentações semelhantes


Anúncios Google