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

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

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

Apresentações semelhantes


Apresentação em tema: "MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação Centro de Excelência Borland no ITA Parceria Borland / ITA."— Transcrição da apresentação:

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

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

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

4 A. Modelos de Persistência em Java
Parceria Borland / ITA

5 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. Parceria Borland / ITA

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

7 Solução # 1 : JDBC JDBC Vantagens 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. Parceria Borland / ITA

8 Solução # 2 : EJB ( Entity Beans)
Vantagens 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. Parceria Borland / ITA

9 Solução # 3 : ORM ORM Vantagens 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. Parceria Borland / ITA

10 Solução # 4 : JDO JDO Vantagens 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. Parceria Borland / ITA

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

12 B. Introdução ao Hibernate
Parceria Borland / ITA

13 Modelo de Dados Relacional
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 Parceria Borland / ITA

14 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. Parceria Borland / ITA

15 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. Parceria Borland / ITA

16 Scopo degli interventi Scopo degli interventi
Arquitetura Scopo degli interventi Aplicação Hibernate Item Exemplo Biblioteca Hibernate hibernate2.jar Arquivo de configuração hibernate.properties Classe de Entidade Java Jogador.java XML de Mapeamento Jogador.hbm.xml Classe de Acesso a Dados DAOHibernate.java 1 2 Scopo degli interventi Arquiteura 3 4 5 Parceria Borland / ITA

17 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. 1 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. 2 3º`Passo: Criar as classes de acesso a dados Carregar configuração do Hibernate Abrir sessão Realizar operação 3 Parceria Borland / ITA

18 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 Parceria Borland / ITA

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

20 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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="br.ita.borcon.entity.Jogador" table="JOGADOR" dynamic-update="true" dynamic-insert="false" > <id name="id" type="long" unsaved-value="-1" > <generator class="increment"/> </id> <property name="nome" type="java.lang.String" update="true" insert="true" column="jog_nome" length="80" not-null="true" /> <many-to-one class="br.ita.borcon.entity.Time“name="time" cascade="all" outer-join="auto" update="true" insert="true" column="tim_id" /> </class> </hibernate-mapping> + Parceria Borland / ITA

21 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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="br.ita.borcon.entity.Jogador" table="JOGADOR" dynamic-update="true" dynamic-insert="false" > <id name="id" type="long" unsaved-value="-1" > <generator class="increment"/> </id> <property name="nome" type="java.lang.String" update="true" insert="true" column="jog_nome" length="80" not-null="true" /> <many-to-one class="br.ita.borcon.entity.Time“name="time" cascade="all" outer-join="auto" update="true" insert="true" column="tim_id" /> </class> </hibernate-mapping> A classe deve possuir construtor sem parâmetros. Importante ! Id == -1 para instância não persistida Parceria Borland / ITA

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

23 3º Passo: Criar as classes de acesso a dados
DAOHibernate.java 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; 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 { 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; } Parceria Borland / ITA

24 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. Parceria Borland / ITA

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

26 <<Favor preencher a ficha de avaliação>>
Obrigado! <<Favor preencher a ficha de avaliação>> Parceria Borland / ITA


Carregar ppt "MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação Centro de Excelência Borland no ITA Parceria Borland / ITA."

Apresentações semelhantes


Anúncios Google