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

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

  • Upload
    hali

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

Bancos de Dados Objeto-relacional e Orientados a Objetos Aula6: DB4O Por: Robson do Nascimento Fidalgo Maria Carolina Torres da Silva [email protected] [email protected]. Motivação. A Orientação a Objetos é uma tendência. - PowerPoint PPT Presentation

Citation preview

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

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

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

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

Bancos de Dados Objeto-relacional e Orientados a Objetos

Aula6:DB4O

Por:Robson do Nascimento Fidalgo Maria Carolina Torres da Silva

[email protected] [email protected]

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

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• ...

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

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

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

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

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

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

Aprendendo o básicoDB4O

6

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

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

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

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

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

DB4O – Aprendendo o básico

• Objeto a ser persistido: Piloto

8

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

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(<nome do arquivo>);

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

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(<nome do arquivo>);try {

// Realiza a operações necessárias}finally {

db.close();}

base.close();

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

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

DB4O – Aprendendo o básico

• Aplicação util.Conectividade util.Repositorio

11

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

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(<nome do arquivo>);try {

base.store(obj);}finally {

db.close();}

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

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

DB4O – Aprendendo o básico

• Armazenar na base (cont.) Aplicação:

13

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

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

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

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

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

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

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

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

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

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

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

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

DB4O – Aprendendo o básico

• Atualizar a base (cont.) Aplicação:

19

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

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

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

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

Consultando...DB4O

21

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

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

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

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

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

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

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

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

DB4O – Consultando...

• Native Queries (cont.) Aplicação:

25

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

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

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

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

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

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

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

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

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

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

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

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

Objetos complexosDB4O

31

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

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

DB4O – Objetos complexos

• Aplicação:

32

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

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

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

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(<nome completa da classe>).cascadeOnUpdate(true);

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

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(<nome completa da classe>).cascadeOnDelete (true);

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

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

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

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

Coleções e arraysDB4O

37

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

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

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

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

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

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

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

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

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

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

HerançaDB4O

42

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

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

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

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

TransaçõesDB4O

44

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

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

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

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

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

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

Conhecimentos extrasDB4O

47

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

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

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

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

Para finalizar...DB4O

49

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

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

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

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

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

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

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

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

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

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

ReferênciasDB4O

54

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

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

DB4O – Referências

• DB4O - Site oficial http://www.db4o.com/

• DB4O – Tutorial http://www.cin.ufpe.br/~mcts/ETI/DB4O/Tutorial.pdf

55

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

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