Escolar Documentos
Profissional Documentos
Cultura Documentos
br
Military Institute of Engineering (IME/RJ) Systems Engineering Department (SE/9)
Sumrio
Introduo
Simplicidade, portabilidade, desempenho Flexibilidade, complexidade, confiabilidade Armazenamento esttico de dados (convencionais) Armazenamento de dados multimdia (desestruturados)
Modelos de dados dirigidos para modelos semnticos e extenses do prprio modelo relacional
Introduo
Descrio do mapeamento entre o modelo de objetos em memria e seu correspondente em disco API para armazenamento e recuperao de objetos persistentes Linguagem de consulta que permite determinar o subconjunto dos objetos persistentes que devem ser trazidos para a memria
Vantagens
Desenvolvedor recupera, manipula e grava objetos num contexto orientado a objetos Minimiza linhas de cdigo Recuperao de objetos parte de uma premissa de navegao ao invs de pensar em joins de tabelas Colabora para um desenvolvimento mais rpido Classes podem ser reusadas num contexto de no-persistncia Minimiza o acesso ao banco de dados
Arquitetura
Arquitetura do Hibernate
Arquitetura
Arquitetura do Hibernate
Arquitetura
SessionFactory
Classe que mantm o mapeamento objeto relacional em memria Permite a criao de sesses (Session), por onde os dados so acessados
Session
Objeto que permite a comunicao entre a aplicao e a persistncia Contm uma conexo JDBC com o banco de dados
Arquitetura
Arquitetura do Hibernate
Arquitetura
Objetos persistentes
Objetos transientes
Objetos da aplicao cujo estado deve ser persistido pelo Hibernate Devem seguir o padro JavaBeans
Instncias de objetos persistentes fora do contexto de uma sesso Podem ser instanciados pela aplicao ou por uma sesso encerrada Representa uma unidade atmica (indivisvel) de uma operao de manipulao de dados Uma sesso pode conter diversas transaes, que so diretamente mapeadas em transaes JDBC
Transaction
Arquitetura
Arquitetura
Arquitetura do Hibernate
Arquitetura
ConnectionFactory
TransactionFactory
Mapeamento
O arquivo de mapeamento
Indica as colunas onde os atributos e associaes so gravados e recuperados lido no incio da execuo da aplicao e armazenado em memria
HQL/Criteria
SQL
Select * from CLIENTE
HQL
from + Cliente.class.getNa me();
Criteria
Criteria criteria = session.createCriteria (Cliente.class);
Manipula objetos e suas propriedades Resultado: colees de objetos Java Opo: uso de Criterias para montar estruturas de consultas atravs de chamadas de mtodos
Iniciando um Projeto
Verso 3.0.5
Fazer o download do driver JDBC do SGBD Adicionar os arquivos do Hibernate ao classpath da sua aplicao (pasta lib do Hibernate): - dom4j-1.6.jar - antlr-2.7.5H3.jar - cglib-2.1.jar - asm.jar - jdbc2_0-stdext.jar - commons-collections2.1.1.jar
Iniciando um Projeto
Modelo de Objeto
Definio de Classe
//... public class Cliente { private Long id; private String nome; private Calendar dataNascimento;
private Set pedidos; //... construtor vazio e mtodos get/set }
Definio de Classe
Definio de Classe
//... public class ItemPedido { private Long id; private String nome; private Double valor; private Integer quantidade; private Pedido pedido; //... construtor vazio e mtodos get/set }
<hibernate-mapping package="br.ime.hibernate.bean"> <class name="Pedido" table="Pedido" lazy="false"> <comment>Classe de Pedido</comment> <id name="id"> <generator class="native"/> </id> <property name="data"/> <property name="loja"/> <many-to-one name="cliente" column="cli_id" not-null="true"/> <list name="itens" inverse="false" lazy="false"> <key column="ped_id"/> <list-index column="posicao" base="1"/> <one-to-many class="ItemPedido"/> </list> </class> </hibernate-mapping>
<hibernate-mapping package="br.ime.hibernate.bean"> <class name="ItemPedido" table="ItemPedido" lazy="false"> <comment>Classe de Itens do Pedido</comment> <id name="id"> <generator class="native"/> </id> <property name="nome"/> <property name="valor"/> <property name="quantidade"/> <many-to-one class="Pedido" name="pedido" column="ped_id" not-null="true"/> </class> </hibernate-mapping>
Banco de dados
Inserir na aplicao o arquivo hibernate.properties (indica qual arquivo de configurao ser utilizado)
path.configuracao = hibernate-postgresql.cfg.xml
Classe utilitria InitSessionFactory para manipular sesses do hibernate e mapear as configuraes utilizadas
Exemplo de Aplicao
Referncias Bibliogrficas
Bauer, C, King G: Hibernate in action. Greenwich, 2005. Barros, M: Desenvolvimento web com Hibernate. Disponvel em: http://www.uniriotec.br/~marcio.barros/ DSW/11ProjetoHibernate.pdf. Acesso em 18/10/2005. Hibernate. Disponvel em: http://www.hibernate.org. Acesso em: 18/10/2005 Hibernate: Hibernate reference documentation version 3.0 Lozano, F: Persistindo com Hibernate. Java Magazine Edio 28, 2005.18-28. Umlauf, S, Filipini, C: Hibernate dicas e truques. Mundo Java Nmero 10, 2005. 32-42.
Discusses avanadas
One-To-Many Many-To-Many One-To-One Many-To-One Pattern Open Session in View: manipulao de referncias preguiosas quando a sesso j foi encerrada
Eager
Gerenciamento de sesses
EJB3/JPA, Annotations