Your SlideShare is downloading. ×
  • Like
  • Save
Hibernate
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Hibernate

  • 2,751 views
Published

Apresentação do trabalho sobre Hibernate, na cadeira Programação para Internet, da UNIVATES, em 2009/A. …

Apresentação do trabalho sobre Hibernate, na cadeira Programação para Internet, da UNIVATES, em 2009/A.

http://blog.brunozambiazi.com

Published in Technology , Design
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,751
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
41
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Hibernate
    • Bruno Dadalt Zambiazi
    • Gabriel Boff
    • Raniéri Geroldi
    • Programação para Internet
    • Centro Universitário UNIVATES
  • 2. Hibernate
    • Framework de mapeamento objeto-relacional (MOR);
    • Criado por Gavin King, em 2001, após aposta deste com seu chefe;
    • Escrito em Java e inicialmente feito somente para essa linguagem, hoje possui versão para .NET (NHibernate);
    • Atualmente, encontra-se na versão 3.3.2;
    • Site: http://www.hibernate.org .
  • 3. Mapeamento Objeto-Relacional (MOR/ORM)
    • Técnica de desenvolvimento para representar tabelas do banco de dados através de classes;
    • Cada registro da tabela é representado através de uma instância da classe;
    • Para mapear as classes, são utilizadas configurações em arquivos XML ou JPA;
  • 4. Principais Características do Hibernate
    • Visa diminuir a complexidade no tratamento dos dados provenientes de um banco;
    • Torna o programa portável, deixando-o independente do banco de dados;
    • Mapeamento de classes através de XML ou JPA;
    • Gera automaticamente todo o schema do banco de dados;
    • Pode ser utilizado em um servidor de aplicações ou standalone.
  • 5. Arquitetura
    • A arquitetura do Hibernate é formada basicamente por um conjunto de interfaces;
    • Relação das Interfaces:
      • Execução, operações de criação, remoção, consulta e atualização no banco de dados: Session , Transaction e Query ;
      • Para configuração do Hibernate: Configuration ;
      • Interação entre os eventos do Hibernate e a aplicação: Interceptor, Lifecycle, Validatable ;
      • Extensão das funcionalidades de mapeamento do Hibernate: UserType , CompositeUserType, IdentifierGenerator .
  • 6. Arquitetura
    • Session
      • O objeto Session é aquele que possibilita a comunicação entre a aplicação e a persistência, através de uma conexão JDBC. É um objeto leve de ser criado, não deve ter tempo de vida por toda a aplicação e não é threadsafe . Um objeto Session possui um cache local de objetos recuperados na sessão, com o qual é possível criar, remover, atualizar e recuperar objetos persistentes.
    • SessionFactory
      • O objeto SessionFactory, também denominado de fábrica de objetos Session, é aquele que mantém o mapeamento objeto-relacional em memória. Permite a criação de objetos Session , a partir dos quais os dados são acessados. Um objeto SessionFactory é threadsafe , porém, deve existir apenas uma instância dele na aplicação pois é um objeto muito pesado.
    • Configuration
      • Um objeto Configuration é utilizado para realizar as configurações de inicialização do Hibernate. Com ele, define-se diversas configurações do Hibernate, como, por exemplo, o driver do banco de dados a ser utilizado, o dialeto, o usuário e senha do banco, entre outras. É a partir de uma instância desse objeto que se indica como os mapeamentos entre classes e tabelas de banco de dados devem ser feitos.
  • 7. Arquitetura
    • Transaction
      • A interface Transaction é utilizada para representar uma unidade indivisível de uma operação de manipulação de dados. O uso dessa interface em aplicações que usam Hibernate é opcional. Essa interface abstrai a aplicação dos detalhes das transações JDBC, JTA ou CORBA.
    • Criteria e Query
      • As interfaces Criteria e Query são utilizadas para realizar consultas ao banco de dados.
  • 8. Funcionamento
    • O Hibernate configura-se como uma camada entre a aplicação e o banco de dados;
    • Uma classe Java é mapeada no Hibernate como uma tabela no banco;
    • Cada instância dessa classe corresponde a um registro da tabela alocado na memória;
    • O Hibernate define estes três tipos de estados:
      • Objetos Transients : são objetos criados através do operador “new” e que não estão associados a uma sessão do Hibernate. São destruídos pelo GC se não forem utilizados na aplicação;
      • Objetos Persistents : são objetos cujas instâncias estão associadas a um contexto persistente, ou seja, têm uma identidade no banco de dados;
  • 9. Funcionamento
    • Objetos Detached : são objetos que tiveram suas instâncias associadas a um contexto persistente, mas que, por algum motivo, deixaram de ser associadas a mesma, por exemplo, por fechamento de sessão, finalização de sessão. São objetos em um estado intermediário, não sendo transientes e nem persistentes.
  • 10. Funcionamento
  • 11. Vantagens/Desvantagens
    • Escrever menos código de persistência na aplicação;
    • Suporte para vários tipos de bancos de dados relacionais;
    • Uma vez feito o mapeamento, permite alterar o banco de dados sem ter que alterar a aplicação;
    • Possível perda de desempenho.
  • 12. Outros Recursos
    • Suporte a mais de 20 SGBD's;
    • Hibernate Query Language (HQL);
    • Criteria;
    • Interceptadores;
    • Cascateamento de operações;
    • Avançado sistema de cache de dois níveis;
    • Hibernate Validator;
    • Log.
  • 13. HQL - Exemplo
    • Session session = DAO.getSession().
    • GrupoProduto grpr = session.load( GrupoProduto.class, 10 );
    • session.createQuery(
    • “ SELECT prod FROM Produto prod WHERE prod.grupo = :grupo OR LOWER( prod.nome ) = LOWER( :nome )”
    • )
    • .setEntity( “grupo”, grpr )
    • .setString( “nome”, “Bicicleta” );
  • 14. Criteria - Exemplo
    • DAO.getSession().createCriteria( Produto.class, “prod” ).add(
    • Restrictions.or(
    • Restrictions.eq( “prod.grupo.id”, 100 ),
    • Restrictions.ilike( “prod.nome”, “Bicicleta” )
    • )
    • );
  • 15. Outros Frameworks ORM
    • iBatis - http://ibatis.apache.org
    • OJB - http://db.apache.org/ojb
    • TopLink - http://www.oracle.com/technology/products/ias/toplink
    • Propel (PHP) - http://propel.phpdb.org
    • SQLObject (Python) - http://www.sqlobject.org
  • 16. Referências
    • http://www.hibernate.org
    • http://pt.wikipedia.org/wiki/Hibernate
    • http://pt.wikipedia.org/wiki/Mapeamento_objeto-relacional
    • http://www.devmedia.com.br/articles/viewcomp.asp?comp=4742
    • http://waltercunha.com/blog/wp/uploads/hibernate_resumo.pdf