Simplicidade na persistência de dados em JavaME Thiago Rossato Thiago Moreira Priscila Tavares Lugon
Arquitetura JavaME Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Configurações: Especificação que detalha a JVM e o conjunto básico de APIs. Perfis: Inclui APIs mais específicas como interface gráfica,  persistência , gerenciamento do ciclo de vida. Pacotes Opcionais: Provém funcionalidade específica que não está associada a uma configuração ou a um perfil. Ex.: Bluetooth.
Persistência em JavaME Como persistir os dados em um dispositivo móvel e com recursos limitados? RMS ( Record Management System ) Na maioria das vezes é a única opção ! Sistema de arquivos JSR 75 (opcional) – nem todos os dispositivos suportam. Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
RMS Vantagens API simples e funcional Suportada por todos os dispositivos JavaME / MIDP Desvantagens Dados são manipulados na forma mais pura (array de bytes) Conseqüentemente a codificação torna-se trabalhosa (serialização) Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Exemplo com RMS public class Person {   private String name; private Date birthday; private char gender; (...) } Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Exemplo com RMS public void save(Person p) { byte[] data = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try { dos.writeUTF(p.getName()); dos.writeLong(p.getBirthday().getTime()); dos.writeChar(p.getGender()); data = baos.toByteArray(); dos.close(); } catch (IOException e) {} RecordStore rs = null; try { rs = RecordStore.openRecordStore(“Person”, true); int id = rs.addRecord(data, 0, data.length); rs.closeRecordStore(); } catch (RecordStoreException e) {} } Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Exemplo com RMS public Person load(int id) { Person p; try { RecordStore rs = RecordStore.openRecordStore(“Person”, true); byte[] data = rs.getRecord(id); ByteArrayInputStream bais = new ByteArrayInputStream(data); DataInputStream dis = new DataInputStream(bais); try { p = new Person(); p.setName(dis.readUTF()); p.setBirthday(new Date(dis.readLong())); p.setGender(dis.readChar()); dis.close(); } catch (IOException e) {} rs.closeRecordStore(); } catch (RecordStoreException e) {}  return p; } Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Motivação Como desenvolvedores JavaME não agüentávamos mais escrever tantas linhas para persistir dados com RMS Na época (2004/2005) não encontramos nenhuma solução que atendesse aos requisitos de um framework de persistência Unimos o útil ao agradável no trabalho de conclusão de curso (TCC) pela UFSC Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Floggy O que é? Framework de persistência de dados orientado a objetos para JavaME Permite ao desenvolvedor trabalhar com persistência em alto nível O que não é? Um banco de dados para JavaME Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Bastidores Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Tipos Compatíveis Tipos primitivos e  wrappers : int, ... Tipos da classe java.lang: String, StringBuffer Tipos da classe java.util: Date, Calendar, Vector, TimeZone, Stack Arrays unidimensional Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Estrutura Pacote  net.sourceforge.floggy.persistence Persistência Persistable PersistableManager Busca ObjsetSet Filter Comparator Exceção FloggyException Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Ambientes de Desenvolvimento Eclipse Netbeans Ant Maven Linha de Comando Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Por onde começar? Quais são as classes que devem ser estendidas? Quais as interfaces que devem ser implementadas? Como desenvolver Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
import net.sourceforge.floggy.persistence.Persistable; public class Phone implements Persistable { private String number; private String extension; private int type; // Mobile, Home, Work, etc ... } Entidade Phone Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
import  net.sourceforge.floggy.persistence.Persistable ; public class Phone  implements Persistable  { private String number; private String extension; private int type; // Mobile, Home, Work, etc ... } Entidade Phone Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Interface de marcação identifica as classes persistentes.
import net.sourceforge.floggy.persistence.Persistable; public class Person implements Persistable { private String name; private Date birthday; private char gender; private Phone[] phones; private transient int age; public static int SOME_STATIC_FIELD = 1; ... } Entidade Person Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
import net.sourceforge.floggy.persistence.Persistable; public class Person implements Persistable { private String name; private Date birthday; private char gender; private Phone[] phones; private transient int age; public static int SOME_STATIC_FIELD = 1; ... } Entidade Person Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Atributos identificados como transientes e atributos estáticos não serão persistidos.
Salvando Person p = new Person(); p.setName(...); p.setBirthday(...); p.setGender(...); p.setPhones(...); try { int id = PersistableManager.getInstance().save(p); } catch (FloggyException e) { ... }
Salvando Person p = new Person(); p.setName(...); p.setBirthday(...); p.setGender(...); p.setPhones(...); try { int  id  = PersistableManager.getInstance().save(p); } catch (FloggyException e) { ... } Ao salvar um objeto um identificador único (ID) é retornado.
Editando e Salvando Person person = new Person(); try { PersistableManager.getInstance().load(person, id); person.setName(...); id = PersistableManager.getInstance().save(person); } catch (FloggyException e) { ... }
Editando e Salvando Person person = new Person(); try { PersistableManager.getInstance().load(person,  id ); person.setName(...); id  = PersistableManager.getInstance().save(person); } catch (FloggyException e) { ... } Para carregar um objeto utilize o identificador único (ID)
Listando todos os objetos PersistableManager pm =  PersistableManager.getInstance(); ObjectSet persons = pm.find(Person.class, null, null); for (int i = 0; i < persons.size(); i++) { Person p = (Person) persons.get(i); ... } Ou dependendo do contexto use o método otimizado Person person = new Person(); PersistableManager pm =  PersistableManager.getInstance(); ObjectSet persons = pm.find(Person.class, null, null); for (int i = 0; i < persons.size(); i++) { persons.get(i, person); ... }
Filtrando os objetos public class MaleFilter implements net.sourceforge.floggy.persistence.Filter { public boolean matches(Persistable persistable) { Person p = (Person) persistable; return p.getGender() == 'M'; } }  ObjectSet persons = pm.find(Person.class, new MaleFilter(), null); for (int i = 0; i < persons.size(); i++) { Person p = (Person) persons.get(i); ... }
Ordenando os objetos public class AgeComparator implements net.sourceforge.floggy.persistence.Comparator { public int compare(Persistable o1, Persistable o2) { Person p1 = (Person) o1; Person p2 = (Person) o2; if (p1.getBirthday().getTime() < p2.getBirthday().getTime()) { return PRECEDES; }  if (p1.getBirthday().getTime() > p2.getBirthday().getTime()) { return FOLLOWS;  }  return EQUIVALENT; } } ObjectSet persons = pm.find(Person.class, null, new AgeCompator());
Excluindo Person person = (…); try { PersistableManager.getInstance().delete(person); } catch (FloggyException e) { ... }
Excluindo todas entidades de um tipo definido try { PersistableManager.getInstance().deleteAll(Person.class); } catch (FloggyException e) { ... }
Excluindo todas entidades de todos os tipos try { PersistableManager.getInstance().deleteAll(); } catch (FloggyException e) { ... }
Comparação Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! RMS Floggy Orientado a registros Orientado a objetos Comandos de baixo nível Comandos de alto nível Aproximadamente  10  linhas para salvar a classe Person Somente  1  linha para salvar a classe Person Controle total dos dados armazenados Controle limitado dos dados armazenados
Onde obter informações? Site Documentação FAQ Lista de discussão do SF.net [email_address] Sistema de gestão de incidentes do SF.net Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Colaborando Para doar R$ 5,00 ligue para 0800-555-555 Para doar R$ 10,00 ligue para 0800-101-010 Para doar R$ 50,00 ligue para 0800-505-050 Para valores superiores Banco do Brasil Agência: 1234-5 Conta: 98765-4 Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Colaborando Código fonte Tradução do site Críticas e sugestões Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Floggy na mídia! Edição 30 da revista MUNDO JAVA Workshop no JustJava 2008 Mês de Java 2008 – Florianópolis/SC II Boot –Xanxerê/SC Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Obrigado! http://floggy.org

Mais conteúdo relacionado

PPT
Floggy-IIBoot-2008-09-25
PPT
Floggy-JustJava-2008-09-10
PPTX
Kotlin: conhecendo features de uma linguagem moderna
PDF
Java 05
KEY
Introdução ao Framework Grails
PDF
Aprendendo Kotlin na Prática
PPTX
Javascript avançado
PDF
Golang para desenvolvedores pragmáticos parte 2
Floggy-IIBoot-2008-09-25
Floggy-JustJava-2008-09-10
Kotlin: conhecendo features de uma linguagem moderna
Java 05
Introdução ao Framework Grails
Aprendendo Kotlin na Prática
Javascript avançado
Golang para desenvolvedores pragmáticos parte 2

Mais procurados (20)

PDF
Go Lang para desenvolvedores pragmáticos (parte 1)
PDF
Escreva aplicações web assíncronas com python3 + tornado
PDF
Aprendendo ruby
PDF
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
PDF
Iteraveis e geradores
PDF
Rails for Dummies
PDF
Iteraveis e geradores em Python
PDF
Iteráveis e geradores (versão RuPy)
KEY
Design de código: princípios e práticas para ter um código sustentável
PDF
Objetos Pythonicos - compacto
PDF
Orientação a objetos em Python (compacto)
PDF
Curso java 06 - mais construtores, interfaces e polimorfismo
PDF
Curso de introdução ao ruby
PDF
Código limpo e eficiente com JavaScript
PDF
Doctrine2 Seminário PHP
PDF
Python para quem sabe Python (aula 2)
PDF
Persistência com Realm.io
PPTX
Curso java 01 - molhando os pés com java
PPTX
Javascript
PDF
Python: a primeira mordida
Go Lang para desenvolvedores pragmáticos (parte 1)
Escreva aplicações web assíncronas com python3 + tornado
Aprendendo ruby
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Iteraveis e geradores
Rails for Dummies
Iteraveis e geradores em Python
Iteráveis e geradores (versão RuPy)
Design de código: princípios e práticas para ter um código sustentável
Objetos Pythonicos - compacto
Orientação a objetos em Python (compacto)
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso de introdução ao ruby
Código limpo e eficiente com JavaScript
Doctrine2 Seminário PHP
Python para quem sabe Python (aula 2)
Persistência com Realm.io
Curso java 01 - molhando os pés com java
Javascript
Python: a primeira mordida
Anúncio

Destaque (8)

DOC
George7bd7024175858
PDF
WordPress Plugins (WordCamp Utah)
PPT
Gods Kleurenmodel
PPT
Enlaces De P
PPT
KHLim Mediatheek HB-IWT bibliotheekinstructie
PPT
Pecha Kucha2
ODP
Aprenda e Turbine o Firefox
PPT
Moiraseto
George7bd7024175858
WordPress Plugins (WordCamp Utah)
Gods Kleurenmodel
Enlaces De P
KHLim Mediatheek HB-IWT bibliotheekinstructie
Pecha Kucha2
Aprenda e Turbine o Firefox
Moiraseto
Anúncio

Semelhante a Floggy-GUJavaSC-2008-09-20 (20)

PDF
JavaScript - A Linguagem
PPT
Javascript
ODP
Groovy para javeiros - Migração Painless
PDF
Turbinando o desenvolvimento Android com Kotlin
PPT
Java Desktop
PDF
Ecosistema spring a_plataforma_enterprise_jav
PPT
55 New Things in Java 7 - Brazil
PDF
Minicurso groovy grails
PDF
Jug bizus
PDF
Jug bizus (4)
PPT
Tdc2010 web
PPTX
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
ODP
Matando o Java e Mostrando o Python
PPT
Indo além na jvm com grails - UFOP
PPT
AspectJ — Programação orientada a aspectos em Java
PDF
Python e bancos NoSQL
ODP
O Prazer De Trabalhar Com Python
PDF
Python e django na prática
PPT
Desenvolvimento Agil Com Doctrine Orm
KEY
Programação Orientada a Testes
JavaScript - A Linguagem
Javascript
Groovy para javeiros - Migração Painless
Turbinando o desenvolvimento Android com Kotlin
Java Desktop
Ecosistema spring a_plataforma_enterprise_jav
55 New Things in Java 7 - Brazil
Minicurso groovy grails
Jug bizus
Jug bizus (4)
Tdc2010 web
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
Matando o Java e Mostrando o Python
Indo além na jvm com grails - UFOP
AspectJ — Programação orientada a aspectos em Java
Python e bancos NoSQL
O Prazer De Trabalhar Com Python
Python e django na prática
Desenvolvimento Agil Com Doctrine Orm
Programação Orientada a Testes

Mais de Thiago Leão Moreira (6)

PPTX
Liferay DEVCON 2023 - What's cooking in Liferay's Cloud?
ODP
Unit test your *LocalServiceImpl classes
PDF
Novidades do Liferay Portal 6.2
PPTX
How to push to production a project with 100+ plugins in less than 10 minutes
ODP
Novas Funcionalidades Liferay 6
PPT
Floggy-M3DD-2009-01-21
Liferay DEVCON 2023 - What's cooking in Liferay's Cloud?
Unit test your *LocalServiceImpl classes
Novidades do Liferay Portal 6.2
How to push to production a project with 100+ plugins in less than 10 minutes
Novas Funcionalidades Liferay 6
Floggy-M3DD-2009-01-21

Último (20)

PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PDF
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PPT
Apresentacao Do Trabalho de Inteligencia
PPTX
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PDF
resumo de instalação de placa arduino em jardim vertical para fertirrigação
PPTX
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
PDF
Capacitação em Logística – Instituto Federal
PDF
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PDF
instalacoes eletricas para industria apressentacao basicas
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPTX
ccursoammaiacursoammaiacursoammaia123456
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
Apresentacao Do Trabalho de Inteligencia
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
resumo de instalação de placa arduino em jardim vertical para fertirrigação
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
Capacitação em Logística – Instituto Federal
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
SEMINÁRIO DE IHC - A interface Homem-Máquina
instalacoes eletricas para industria apressentacao basicas
Padrões de Beleza I - Estética Corporal e Saúde
Analise Estatica de Compiladores para criar uma nova LP
Processamento da remessa no SAP ERP, SCM610 Col15
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
ccursoammaiacursoammaiacursoammaia123456

Floggy-GUJavaSC-2008-09-20

  • 1. Simplicidade na persistência de dados em JavaME Thiago Rossato Thiago Moreira Priscila Tavares Lugon
  • 2. Arquitetura JavaME Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Configurações: Especificação que detalha a JVM e o conjunto básico de APIs. Perfis: Inclui APIs mais específicas como interface gráfica, persistência , gerenciamento do ciclo de vida. Pacotes Opcionais: Provém funcionalidade específica que não está associada a uma configuração ou a um perfil. Ex.: Bluetooth.
  • 3. Persistência em JavaME Como persistir os dados em um dispositivo móvel e com recursos limitados? RMS ( Record Management System ) Na maioria das vezes é a única opção ! Sistema de arquivos JSR 75 (opcional) – nem todos os dispositivos suportam. Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 4. RMS Vantagens API simples e funcional Suportada por todos os dispositivos JavaME / MIDP Desvantagens Dados são manipulados na forma mais pura (array de bytes) Conseqüentemente a codificação torna-se trabalhosa (serialização) Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 5. Exemplo com RMS public class Person {   private String name; private Date birthday; private char gender; (...) } Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 6. Exemplo com RMS public void save(Person p) { byte[] data = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try { dos.writeUTF(p.getName()); dos.writeLong(p.getBirthday().getTime()); dos.writeChar(p.getGender()); data = baos.toByteArray(); dos.close(); } catch (IOException e) {} RecordStore rs = null; try { rs = RecordStore.openRecordStore(“Person”, true); int id = rs.addRecord(data, 0, data.length); rs.closeRecordStore(); } catch (RecordStoreException e) {} } Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 7. Exemplo com RMS public Person load(int id) { Person p; try { RecordStore rs = RecordStore.openRecordStore(“Person”, true); byte[] data = rs.getRecord(id); ByteArrayInputStream bais = new ByteArrayInputStream(data); DataInputStream dis = new DataInputStream(bais); try { p = new Person(); p.setName(dis.readUTF()); p.setBirthday(new Date(dis.readLong())); p.setGender(dis.readChar()); dis.close(); } catch (IOException e) {} rs.closeRecordStore(); } catch (RecordStoreException e) {} return p; } Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 8. Motivação Como desenvolvedores JavaME não agüentávamos mais escrever tantas linhas para persistir dados com RMS Na época (2004/2005) não encontramos nenhuma solução que atendesse aos requisitos de um framework de persistência Unimos o útil ao agradável no trabalho de conclusão de curso (TCC) pela UFSC Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 9. Floggy O que é? Framework de persistência de dados orientado a objetos para JavaME Permite ao desenvolvedor trabalhar com persistência em alto nível O que não é? Um banco de dados para JavaME Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 10. Bastidores Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 11. Tipos Compatíveis Tipos primitivos e wrappers : int, ... Tipos da classe java.lang: String, StringBuffer Tipos da classe java.util: Date, Calendar, Vector, TimeZone, Stack Arrays unidimensional Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 12. Estrutura Pacote net.sourceforge.floggy.persistence Persistência Persistable PersistableManager Busca ObjsetSet Filter Comparator Exceção FloggyException Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 13. Ambientes de Desenvolvimento Eclipse Netbeans Ant Maven Linha de Comando Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 14. Por onde começar? Quais são as classes que devem ser estendidas? Quais as interfaces que devem ser implementadas? Como desenvolver Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 15. import net.sourceforge.floggy.persistence.Persistable; public class Phone implements Persistable { private String number; private String extension; private int type; // Mobile, Home, Work, etc ... } Entidade Phone Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 16. import net.sourceforge.floggy.persistence.Persistable ; public class Phone implements Persistable { private String number; private String extension; private int type; // Mobile, Home, Work, etc ... } Entidade Phone Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Interface de marcação identifica as classes persistentes.
  • 17. import net.sourceforge.floggy.persistence.Persistable; public class Person implements Persistable { private String name; private Date birthday; private char gender; private Phone[] phones; private transient int age; public static int SOME_STATIC_FIELD = 1; ... } Entidade Person Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 18. import net.sourceforge.floggy.persistence.Persistable; public class Person implements Persistable { private String name; private Date birthday; private char gender; private Phone[] phones; private transient int age; public static int SOME_STATIC_FIELD = 1; ... } Entidade Person Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Atributos identificados como transientes e atributos estáticos não serão persistidos.
  • 19. Salvando Person p = new Person(); p.setName(...); p.setBirthday(...); p.setGender(...); p.setPhones(...); try { int id = PersistableManager.getInstance().save(p); } catch (FloggyException e) { ... }
  • 20. Salvando Person p = new Person(); p.setName(...); p.setBirthday(...); p.setGender(...); p.setPhones(...); try { int id = PersistableManager.getInstance().save(p); } catch (FloggyException e) { ... } Ao salvar um objeto um identificador único (ID) é retornado.
  • 21. Editando e Salvando Person person = new Person(); try { PersistableManager.getInstance().load(person, id); person.setName(...); id = PersistableManager.getInstance().save(person); } catch (FloggyException e) { ... }
  • 22. Editando e Salvando Person person = new Person(); try { PersistableManager.getInstance().load(person, id ); person.setName(...); id = PersistableManager.getInstance().save(person); } catch (FloggyException e) { ... } Para carregar um objeto utilize o identificador único (ID)
  • 23. Listando todos os objetos PersistableManager pm = PersistableManager.getInstance(); ObjectSet persons = pm.find(Person.class, null, null); for (int i = 0; i < persons.size(); i++) { Person p = (Person) persons.get(i); ... } Ou dependendo do contexto use o método otimizado Person person = new Person(); PersistableManager pm = PersistableManager.getInstance(); ObjectSet persons = pm.find(Person.class, null, null); for (int i = 0; i < persons.size(); i++) { persons.get(i, person); ... }
  • 24. Filtrando os objetos public class MaleFilter implements net.sourceforge.floggy.persistence.Filter { public boolean matches(Persistable persistable) { Person p = (Person) persistable; return p.getGender() == 'M'; } } ObjectSet persons = pm.find(Person.class, new MaleFilter(), null); for (int i = 0; i < persons.size(); i++) { Person p = (Person) persons.get(i); ... }
  • 25. Ordenando os objetos public class AgeComparator implements net.sourceforge.floggy.persistence.Comparator { public int compare(Persistable o1, Persistable o2) { Person p1 = (Person) o1; Person p2 = (Person) o2; if (p1.getBirthday().getTime() < p2.getBirthday().getTime()) { return PRECEDES; } if (p1.getBirthday().getTime() > p2.getBirthday().getTime()) { return FOLLOWS; } return EQUIVALENT; } } ObjectSet persons = pm.find(Person.class, null, new AgeCompator());
  • 26. Excluindo Person person = (…); try { PersistableManager.getInstance().delete(person); } catch (FloggyException e) { ... }
  • 27. Excluindo todas entidades de um tipo definido try { PersistableManager.getInstance().deleteAll(Person.class); } catch (FloggyException e) { ... }
  • 28. Excluindo todas entidades de todos os tipos try { PersistableManager.getInstance().deleteAll(); } catch (FloggyException e) { ... }
  • 29. Comparação Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! RMS Floggy Orientado a registros Orientado a objetos Comandos de baixo nível Comandos de alto nível Aproximadamente 10 linhas para salvar a classe Person Somente 1 linha para salvar a classe Person Controle total dos dados armazenados Controle limitado dos dados armazenados
  • 30. Onde obter informações? Site Documentação FAQ Lista de discussão do SF.net [email_address] Sistema de gestão de incidentes do SF.net Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 31. Colaborando Para doar R$ 5,00 ligue para 0800-555-555 Para doar R$ 10,00 ligue para 0800-101-010 Para doar R$ 50,00 ligue para 0800-505-050 Para valores superiores Banco do Brasil Agência: 1234-5 Conta: 98765-4 Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 32. Colaborando Código fonte Tradução do site Críticas e sugestões Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 33. Floggy na mídia! Edição 30 da revista MUNDO JAVA Workshop no JustJava 2008 Mês de Java 2008 – Florianópolis/SC II Boot –Xanxerê/SC Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você!
  • 34. Agora você não precisa mais escrever centenas de linhas de código de persistência. Deixe que o Floggy faça o trabalho sujo para você! Obrigado! http://floggy.org