• Save
Hibernate
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Hibernate

  • 3,555 views
Uploaded on

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

More 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
3,555
On Slideshare
3,552
From Embeds
3
Number of Embeds
2

Actions

Shares
Downloads
41
Comments
0
Likes
2

Embeds 3

http://www.linkedin.com 2
http://localhost 1

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