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

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

Salvador Dali. The Persistence of Memory. 1931 1 Parceria Borland / ITA MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação.

Apresentações semelhantes


Apresentação em tema: "Salvador Dali. The Persistence of Memory. 1931 1 Parceria Borland / ITA MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação."— Transcrição da apresentação:

1 Salvador Dali. The Persistence of Memory Parceria Borland / ITA MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação Centro de Excelência Borland no ITA

2 2 Parceria Borland / ITA Objetivos Apresentar as principais soluções de persistência em Java Realizar tutorial do Hibernate Compartilhar Experiências Salvador Dali. The Persistence of Memory. 1931

3 3 Parceria Borland / ITA Roteiro A.Modelos de Persistência em Java B.Introdução ao Hibernate

4 Salvador Dali. The Persistence of Memory Parceria Borland / ITA A. Modelos de Persistência em Java

5 5 Parceria Borland / ITA Definição Persistência em Java pode ser definida como a manutenção do estado de objetos de uma aplicação em um armazenamento não-volátil, durante múltiplas execuções da JVM sujeitas a falhas do sistema e da aplicação.

6 6 Parceria Borland / ITA Os 5 Frameworks de Persistência

7 7 Parceria Borland / ITA Solução # 1 : JDBC Vantagens JDBC Desvantagens Tecnologia Testada e largamente utilizada; Rápida execução; Permite acesso a características proprietárias dos Banco de Dados; e Não necessita de contêiner de aplicação. 30 % do código da aplicação gasto com JDBC; Todas as função CRUD (Create, Retrieve, Update and Delete) precisam ser codificadas; Código JDBC não é portável; e Não possui suporte para herança e polimorfismo de objetos.

8 8 Parceria Borland / ITA Solução # 2 : EJB ( Entity Beans) Vantagens EJB ( Entity Beans) Desvantagens API padronizada; Suporte de ferramentas dos principais fornecedores; Provê características adicionais a persistência de dados; e Arquitetura de processamento distribuído. Necessitam de uma grande variedade de Design Patterns; Verbosa: necessita de vários arquivos para cada entidade; EJB QL é estática; Não possui suporte a herança / polimorfismo; e Não suporta entidades de granularidade fina.

9 9 Parceria Borland / ITA Solução # 3 : ORM Vantagens ORM Desvantagens Baseados em tecnologias maduras: JDBC e BD Relacional; Desempenho semelhante a código JDBC manual; Suporta herança e polimorfismo; Suporta queries dinâmicas; e Não necessita de modificação de bytecode. Falta de API padronizada; e Suporte limitado a stored procedures.

10 10 Parceria Borland / ITA Solução # 4 : JDO Vantagens JDO Desvantagens API padronizada; Suporte a herança e polimorfismo; Funcionalidades de consultas avançada: JDOQL ; Não necessita de contêiner de aplicação; e Integração com varianda gama de fontes de dados; Tecnologia pouco madura. Necessita de modificação do bytecode; A especificação JDO 2.0 não está completa; e Atualmente requer extensões proprietárias para mapeamento O/R.

11 11 Parceria Borland / ITA Solução # 5 : Serialization Vantagens Serialization Desvantagens Altíssima performance; e Simplicidade. Portabilidade para outras linguagens; e Limitações quando a disponibilidade de memória (Prevayler).

12 Salvador Dali. The Persistence of Memory Parceria Borland / ITA B. Introdução ao Hibernate

13 13 Parceria Borland / ITA Hibernate: é um software livre de mapeamento objeto- relacional (ORM) para Java. Models de Dados OO Classes Instâncias Modelo de Dados Relacional Tabelas Registros Ferramentas ORM

14 14 Parceria Borland / ITA Características do Hibernate Mapeamento objeto-relacional flexível: –representação de herança em 3 formas; –cascateamento configurável de operações; –associaçoes bidirecionais e polimórficas: many-to-one, many-to-many e outras; Geração automática de chave primária: –métodos: sequence, hilo, uuid, foreign, native e outros. Alta performance –Suporte a lazy inicialization de coleções e objetos; –overhead < 10% em relação ao JDBC; –Opção de optimistic locking.

15 15 Parceria Borland / ITA Características do Hibernate Suporte a dialetos de vários banco de dados: –DB2, PostgreSQL, MySQL, Oracle, SAP DB, HypersonicSQL, Interbase, Firebird e outros Linguaguens de consulta suportadas: –Dialeto SQL nativo de seu banco de dados; –HQL :linguagem de consulta OO semelhante ao SQL e independente de banco de dados.

16 16 Parceria Borland / ITA Arquitetura Scopo degli interventi Arquiteura Scopo degli interventi Aplicação Hibernate ItemExemplo Biblioteca Hibernatehibernate2.jar Arquivo de configuração hibernate.propertie s Classe de Entidade Java Jogador.java XML de MapeamentoJogador.hbm.xml Classe de Acesso a Dados DAOHibernate.jav a

17 17 Parceria Borland / ITA Criando uma Aplicação com o Hibernate 1º Passo: Instalar e configurar o Hibernate Download do site Colocar no diretório /lib o arquivo jar do driver JDBC. Editar hibernate.properties e configurá-lo para o seu banco de dados. 2º Passo: Modelar as classes de entidade a serem persistidas Criar as classes de entidades com métodos get e set para cada atributo (JavaBean) Criar os arquivos de mapeamento XML para cada classe de entidade. 3º`Passo: Criar as classes de acesso a dados Carregar configuração do Hibernate Abrir sessão Realizar operação 1 2 3

18 18 Parceria Borland / ITA 1º Passo: Instalar e configurar o Hibernate hibernate.properties ## HypersonicSQL hibernate.dialect net.sf.hibernate.dialect.HSQLDialect hibernate.connection.driver_class org.hsqldb.jdbcDriver hibernate.connection.username sa hibernate.connection.password sa hibernate.connection.url jdbc:hsqldb:hsql://localhost

19 19 Parceria Borland / ITA 2º Passo: Modelar as classes de entidade a serem persistidas Diagrama das Classes de Entidades

20 20 Parceria Borland / ITA 2º Passo: Modelar as classes de entidade a serem persistidas Jogador.java package br.ita.borcon.entity; table="Jogador" dynamic- update="true" */ public class Jogador { private long id = -1; private String nome; private Time time; public Jogador() { } generator-class="increment" column="jog_id" unsaved-value="-1" */ public long getId() { return id; } column="jog_nome" not- null="true" */ public String getNome() { return nome; } column="tim_id" cascade="all" */ public Time getTime() { return time; } public void setId(long id) { this.id = id; } public void setNome(String nome) { this.nome = nome; } public void setTime(Time time) { this.time = time; } } Jogador.hbm.xml +

21 21 Parceria Borland / ITA 2º Passo: Modelar as classes de entidade a serem persistidas Jogador.java package br.ita.borcon.entity; table="Jogador" dynamic- update="true" */ public class Jogador { private long id = -1; private String nome; private Time time; public Jogador() { } generator-class="increment" column="jog_id" unsaved-value="-1" */ public long getId() { return id; } column="jog_nome" not- null="true" */ public String getNome() { return nome; } column="tim_id" cascade="all" */ public Time getTime() { return time; } public void setId(long id) { this.id = id; } public void setNome(String nome) { this.nome = nome; } public void setTime(Time time) { this.time = time; } } Jogador.hbm.xml Importante ! Id == -1 para instância não persistida A classe deve possuir construtor sem parâmetros.

22 22 Parceria Borland / ITA 3º Passo: Criar as classes de acesso a dados.

23 23 Parceria Borland / ITA 3º Passo: Criar as classes de acesso a dados import net.sf.hibernate.cfg.*; import net.sf.hibernate.*; public class DAOHibernate implements IDAO { private static SessionFactory factory; public static void loadProgrammaticConfiguration() throws MappingException, HibernateException { Configuration cfg = new Configuration().addClass(Jogador.class).addClass(Time.class).setProperty(Environment.HBM2DDL_AUTO, "create"); DAOHibernate.factory = cfg.buildSessionFactory(); } public Object getEntity(Class classType, long id) throws Exception { // Obtém uma conexão JDBC e instancia uma nova sessão Session s = factory.openSession(); // Inicia uma nova transação (opcional) Transaction tx = s.beginTransaction(); Object aObject = s.load(classType, new Long(id)); tx.commit(); s.close(); return aObject; } DAOHibernate.java public void saveOrUpdade(Object entity) throws Exception { Session s = factory.openSession(); Transaction tx = null; try { tx = s.beginTransaction(); s.saveOrUpdate(entity); tx.commit(); } catch (Exception e) { if (tx != null) tx.rollback(); throw e; } finally { s.close(); } } public List getAllJogadores(Time time) throws HibernateException { Session s = factory.openSession(); Transaction tx = s.beginTransaction(); List queryResult = s.find( "from br.ita.borcon.entity.Jogador as jog where jog.time.id=?", new Long(time.getId()), Hibernate.LONG); tx.commit(); s.close(); return queryResult; } }

24 24 Parceria Borland / ITA Futuro do Hibernate Hibernate3 previsto para início de 2005 Novas características do JDK 1.5: Java generics para coleções seguras; Mapeamento de entidades para stored procedures; e Maior suporte a design orientado a evento.

25 25 Parceria Borland / ITA Perguntas Exemplo Simples de uma Aplicação Hibernate

26 26 Parceria Borland / ITA Obrigado! >


Carregar ppt "Salvador Dali. The Persistence of Memory. 1931 1 Parceria Borland / ITA MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação."

Apresentações semelhantes


Anúncios Google