Post on 08-Jun-2015
description
Introdução ao DB4O
Conhecendo um Banco de Dados
Orientado a Objeto
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Introdução
A transformação de objetos para persistência em um SGBD Relacionaldemanda muito tempo, aumentando o custo de um software. Uma saída éutilizar um framework de persistência, mas este aumenta muito oconsumo de processo, tornando-o muitas vezes inviável.
O db4o é a solução para este problema, é um SGBD , onde os dadossão persistidos da mesma forma que são trabalhados na linguagemOrientada a Objeto.
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Sobre o db4o
• Db4o é o mais popular ODBMS (Object-oriented Database ManagementSystem) do mercado.
• É nativo das plataformas Java e .Net.
• Pode ser implantado em um sistema como Standalone ou Cliente/Servidor.
• Tem suporte a esquemas evolutivos, indexação, transações, concorrência,criptografia, todos os serviços que um SGBD Relacional convencionalpossui.
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Sobre o db4o
• Possui uma rede crescente de parceiros comerciais, assegurandocompatibilidade com líderes de plataformas, como Sun Microsystems’,Microsoft, ProSyst, Novell, OMG, OSGi, etc.
• A versão 7.2 já está em avaliação como candidata a última versão estável,mas atualmente é a 6.4.
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Casos de Sucesso
Muitas das gigantes do mercado já vem usando o db4o em seusprodutos, tais como BMW, Boing, Bosch, IBM, Intel, Ricoh e Seagate.
• Boeing, uma das maiores empresas de defesa aero espacial, selecionou o db4o para o P-8A Multi-Mission Maritime Aircraft, vigilância e reconhecimento para os aviões da marinha dos U.S.
"Para a Boeing, db4o oferece as vantagens da significativa baixa administração de dados e uma melhor produtividade para o desenvolvimento. Db4o ajuda a Boeing gerir a melhor custos e calendários e ao mesmo tempo reduzindo custos operacionais".
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Casos de Sucesso
• INDRA Sistemas, empresa líder espanhola em TI e Sistemas de Defesa, usa db4o para segurança de sistema integrado de controle críticos (IRC) no Spanish AVE High-Speed Train.
“Nós escolhemos db4o como o núcleo da base de dados em tempo real. Db4o permite que o sistema processe mais de 200.000 objetos por segundo.”
Fonte:http://www.db4o.com/about/customers/
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Algumas das Vantagens
• Elimina ferramentas de códigos para mapeamento objeto-relacional.
• Utiliza o paradigma Orientação Objeto.
• Portabilidade, Java e .NET, oferecendo multiplataforma.
• Curva de aprendizado rasa.
• Sincronismo suave.
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Algumas das Vantagens
• Fácil refatoramento.
• Alta performance.
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Fonte: http://www.db4o.com/s/benchmarkdb
Programa Exemplo
• Plataforma: Java 1.5
• Banco de Dados: db4o 6.4
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Programa Exemplo
• Domínio:
package ronoel.exemplo.db4o.dominio;
public class Aluno {
...
public String getNome() { ... }
public String getMatricula() { ... }
public double getCR() { ... }
public void addDisciplina ( Disciplina disciplina ){ ... }
public void print(){ ... }
...
}
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Programa Exemplo
• CONEXÃO COM O BANCO DE DADOS:
Exemplo:
...
ObjectContainer conexao =
Db4o.openFile(“arquivo_dados.yap”);
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Programa Exemplo
• PERSISTÊNCIA DE UM OBJETO :
Exemplo:
...
Aluno aluno = new Aluno();
...
conexao.set(aluno);
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Tipos de Querys
• QBE (Query By Example)
• NQ ( Native Query )
• SODA Query API
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Query By Example - QBE
• Query muito limitada, mas muito simples.
Exemplo:
...
Aluno aluno = new Aluno();
aluno.setMatricula(“es51468”);
ObjectSet result = conexao.get(aluno);
Aluno found;
if( result.hasNext() )
found = (Aluno) result.Next();
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Native Query - NQ
• 100% refatoravel.
• 100% checada em tempo de compilação.
• Orientada a Objeto
• Query mais recomendada
Exemplo:
...
final Disciplina disciplinaCompare = disciplina
ObjectSet result = conexao.query( new Predicate<Aluno>() {
public boolean match(Aluno a) {
return a.containDisciplina(disciplinaCompare);
}
});
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
SODA Query API
• Query de baixo nível.
• Semelhante a SQL.
Exemplo:
...
Query query = conexao.query();
query.constrain(Aluno.class);
query.descend("nome").orderAscending();
ObjectSet result = query.execute();
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Update de um Objeto
• Basta buscar um objeto do banco, modificá-lo e fazer a operação set delenovamente.
...
Aluno aluno = new Aluno();
aluno.setMatricula(“es51468”);
ObjectSet result = conexao.get(aluno);
Aluno found;
if( result.hasNext() )
found = (Aluno) result.Next();
found.setCR(78.4);
conexao.set(found);
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Transações
• Commit
...
conexao.set(aluno);
conexao.commit();
...
• Rollback
...
conexao.set(aluno);
conexao.rollback();
conexao.ext().refresh(aluno, Integer.MAX_VALUE);
...
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Conclusão
• Db4o é a melhor solução para aplicações onde há a necessidade de umbanco de dados embarcado em plataformas Java ou .NET
• É uma excelente solução para dispositivos limitados.
• Ótimo para sistemas críticos e de tempo real.
• Reduz significativamente o tempo de desenvolvimento de um projeto.
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV
Referências Bibliográficas
• http://developer.db4o.com/
• http://www.codeproject.com/KB/cs/oop_db4o_part_2.aspx
• http://www.devmedia.com.br/articles/viewcomp.asp?comp=4121
• http://www.theserverside.com/tt/articles/article.tss?l=Insidedb4o
Ronoel Matos de Almeida Botelho Jr.Universidade Federal de Viçosa - UFV