260 likes | 407 Views
MODELOS DE PERSISTÊNCIA EM JAVA Ronaldo Carvalho Moura Júnior Engenharia de Computação Centro de Excelência Borland no ITA. Objetivos. Apresentar as principais soluções de persistência em Java Realizar tutorial do Hibernate Compartilhar Experiências.
E N D
MODELOS DE PERSISTÊNCIA EM JAVARonaldo Carvalho Moura JúniorEngenharia de Computação Centro de Excelência Borland no ITA 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 Parceria Borland / ITA
Roteiro • Modelos de Persistência em Java • Introdução ao Hibernate Parceria Borland / ITA
A. Modelos de Persistência em Java 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. Parceria Borland / ITA
Os 5 Frameworks de Persistência Parceria Borland / ITA
Solução # 1 : JDBC JDBC Vantagens Desvantagens Parceria Borland / ITA
Solução # 2 : EJB ( Entity Beans) EJB ( Entity Beans) Vantagens Desvantagens Parceria Borland / ITA
Solução # 3 : ORM ORM Vantagens Desvantagens Parceria Borland / ITA
Solução # 4 : JDO JDO Vantagens Desvantagens Parceria Borland / ITA
Solução # 5 : Serialization Serialization Vantagens Desvantagens Parceria Borland / ITA
B. Introdução ao Hibernate Parceria Borland / ITA
Models de Dados OO Modelo de Dados Relacional • Classes • Instâncias • Tabelas • Registros • Hibernate: é um software livre de mapeamento objeto-relacional (ORM) para Java. Ferramentas ORM 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. 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. Parceria Borland / ITA
Scopo degli interventi Arquiteura Scopo degli interventi Aplicação Hibernate Arquitetura 1 2 3 4 5 Parceria Borland / ITA
Criando uma Aplicação com o Hibernate • 1º Passo: Instalar e configurar o Hibernate • Download do site http://www.hibernate.org • 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
1º Passo: Instalar e configurar o Hibernate Parceria Borland / ITA
2º Passo: Modelar as classes de entidade a serem persistidas Parceria Borland / ITA
2º Passo: Modelar as classes de entidade a serem persistidas + Parceria Borland / ITA
2º Passo: Modelar as classes de entidade a serem persistidas A classe deve possuir construtor sem parâmetros. Importante ! Id == -1 para instância não persistida Parceria Borland / ITA
3º Passo: Criar as classes de acesso a dados. Parceria Borland / ITA
3º Passo: Criar as classes de acesso a dados • DAOHibernate.java • import net.sf.hibernate.cfg.*; • import net.sf.hibernate.*; • publicclass DAOHibernate implements IDAO { • privatestatic SessionFactory factory; • publicstaticvoid 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; • } • publicvoid 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; } • } 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. Parceria Borland / ITA
Perguntas Exemplo Simples de uma Aplicação Hibernate www.redecasd.ita.br/rmoura/lectures/Borcon2004-Hibernate.zip Parceria Borland / ITA
Obrigado! • <<Favor preencher a ficha de avaliação>> ronaldo.c.moura@bol.com.br Parceria Borland / ITA