Hibernate

1,338 views

Published on

Introdução ao Hibernate

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Hibernate

  1. 1.     Introdução ao Hibernate Walter Itamar Mourão walter.mourao@gmail.com
  2. 2.     Mapeamento Objeto-Relacional ● O mapeamento objeto­relacional é uma técnica de  programação para a conversão de dados entre  bancos de dados relacionais e linguagens  orientadas a objetos. ● Hibernate, iBatis, etc.
  3. 3.     Mapeamento Objeto- Relacional POJO int id; String name; String getName() int getId() void setName(String) void setId(int) Tabela SQL id [number] primary key, name [varchar(50)]
  4. 4.     Hibernate ● Ferramenta para persistência de classes Java através  do mapeamento Objeto/Relacional. ● nHibernate=Hibernate para .net ● Compatível com JPA. ● Projeto open­source (licença LGPL) iniciado em  2001 por Gavin King, atualmente mantido pelo  grupo JBoss. ● É a base de persistência da implementação EJB do  servidor JBoss.
  5. 5.     Arquitetura
  6. 6.     Vantagens ● Alivia o programador de tarefas triviais no acesso  ao banco. ● Encapsula JDBC, SQL, transações (mais sobre isso  no Spring). ● Facilita a otimização através do uso de caches e  estratégias de leitura dos dados (fetch). ● Não exige contêiner.
  7. 7.     Vantagens ● Ferramentas para criação e atualização de scripts. ● Modelo de objetos desacoplado da implementação  do banco (independência de fornecedor). ● Persistência de POJO (anotações são opcionais). ● HQL, Criteria Queries ● Permite o acesso via SQL ● Versionamento automático ● Open­source, custo zero.
  8. 8.     Desvantagens ● Curva de aprendizado “íngreme”. ● Má performance em situações de grande volume de  atualizações. ● Alguns mapeamentos não são muito diretos e  demandam uma boa reflexão antes da  implementação, principalmente em casos de  hierarquias.
  9. 9.     SessionFactory ● Conjunto de mapeamentos e definições referentes a  um banco de dados. ● Threadsafe e único para a aplicação inteira. ● Factory para Session ● Pode conter caches de segundo nível (o Session é o  cache de primeiro nível).
  10. 10.     Configuração A configuração pode ser via programação, via  arquivos XML ou via configuração Spring. ● Dialeto SQL Nome do conjunto de comando SQL que o Hibernate  deve utilizar para acessar um determinado banco de  dados. ● NomeDaClasse.hbm.xml arquivos que contém informações de mapeamento de  uma determinada classe ou hierarquia.
  11. 11.     Session ● Objeto transiente, associado a uma única thread que  representa uma unidade de conversação (não de  transação) entre a aplicação e o banco de dados. ● Encapsula a conexão JDBC, abrindo/fechando ou  buscando/liberando do pool. ● Factory para Transaction. ● Contém sempre um cache de primeiro nível dos  objetos persistentes.
  12. 12.     Objetos persistentes ● Os objetos persistentes são criados a partir de uma  sessão e são sempre (*) vinculados a ela. * existem situações de exceção, mas sempre a partir  de programação explícita nesse sentido.
  13. 13.     Transaction ● Objeto demarcador de transações (JDBC, JTA,  CORBA, etc.) únicas. ● Sempre associado a um Session.
  14. 14.     ConnectionProvider ● Objeto único na aplicação responsável pelo  fornecimento de conexões para o Session.
  15. 15.     HQL ● Hibernate Query Language Linguagem de consulta baseada em SQL, porém com  extensões para suportar classes. Ex.: select g.id from Grupo g where g.descricao like 'A%' from Usuario u join u.grupo from Usuario u where u.grupo.descricao like 'A%'
  16. 16.     Criteria Queries ● Mecanismo de consultas usando somente Java. Ex.: final Criteria criteria =session.createCriteria(Grupo.class); criteria.add(Restrictions.ilike("descricao", descricao)); criteria.addOrder(Order.asc("descricao")); final Collection grupos = criteria.list();
  17. 17.     HQL - Vantagens ● Isolamento da aplicação: pode­se usar em  mecanismos de pesquisa e relatórios  independentemente do programador. ●  Compacto e auto­contido. ● Permite transformações na própria query.
  18. 18.     Criteria - Vantagens ● Mais natural para o programador. ● Permite construções dinâmicas.
  19. 19.     Ferramentas ● Criação, atualização e validação dos mapeamentos. ● Criação do mapeamento a partir do banco. ● Hibernate console.
  20. 20.     AndroMDA & Hibernate ● Geração de 100% das configurações e código Java  necessários. ● Suporte a Criteria Queries e HQL no modelo. ● Suporte a Criteria “simplificada” através das classes  Search e SearchParameter. ● Geração de métodos com transformações. ● Suporte a OCL.
  21. 21.     AndroMDA & Hibernate ● Ferramentas de criação/atualização/validação de  banco integradas. ● Mapeamento de hierarquias. ● Mapeamento de enumerados e tipos diversos.

×