SlideShare uma empresa Scribd logo
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 (16)

PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Processos na gestão de transportes, TM100 Col18
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
COBITxITIL-Entenda as diferença em uso governança TI
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Arquitetura de computadores - Memórias Secundárias
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx

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