Hibernate

3.214 visualizações

Publicada em

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

http://blog.brunozambiazi.com

Publicada em: Tecnologia, Design
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.214
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
41
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Hibernate

  1. 1. Hibernate <ul><li>Bruno Dadalt Zambiazi </li></ul><ul><li>Gabriel Boff </li></ul><ul><li>Raniéri Geroldi </li></ul><ul><li>Programação para Internet </li></ul><ul><li>Centro Universitário UNIVATES </li></ul>
  2. 2. Hibernate <ul><li>Framework de mapeamento objeto-relacional (MOR); </li></ul><ul><li>Criado por Gavin King, em 2001, após aposta deste com seu chefe; </li></ul><ul><li>Escrito em Java e inicialmente feito somente para essa linguagem, hoje possui versão para .NET (NHibernate); </li></ul><ul><li>Atualmente, encontra-se na versão 3.3.2; </li></ul><ul><li>Site: http://www.hibernate.org . </li></ul>
  3. 3. Mapeamento Objeto-Relacional (MOR/ORM) <ul><li>Técnica de desenvolvimento para representar tabelas do banco de dados através de classes; </li></ul><ul><li>Cada registro da tabela é representado através de uma instância da classe; </li></ul><ul><li>Para mapear as classes, são utilizadas configurações em arquivos XML ou JPA; </li></ul>
  4. 4. Principais Características do Hibernate <ul><li>Visa diminuir a complexidade no tratamento dos dados provenientes de um banco; </li></ul><ul><li>Torna o programa portável, deixando-o independente do banco de dados; </li></ul><ul><li>Mapeamento de classes através de XML ou JPA; </li></ul><ul><li>Gera automaticamente todo o schema do banco de dados; </li></ul><ul><li>Pode ser utilizado em um servidor de aplicações ou standalone. </li></ul>
  5. 5. Arquitetura <ul><li>A arquitetura do Hibernate é formada basicamente por um conjunto de interfaces; </li></ul><ul><li>Relação das Interfaces: </li></ul><ul><ul><li>Execução, operações de criação, remoção, consulta e atualização no banco de dados: Session , Transaction e Query ; </li></ul></ul><ul><ul><li>Para configuração do Hibernate: Configuration ; </li></ul></ul><ul><ul><li>Interação entre os eventos do Hibernate e a aplicação: Interceptor, Lifecycle, Validatable ; </li></ul></ul><ul><ul><li>Extensão das funcionalidades de mapeamento do Hibernate: UserType , CompositeUserType, IdentifierGenerator . </li></ul></ul>
  6. 6. Arquitetura <ul><li>Session </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>SessionFactory </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Configuration </li></ul><ul><ul><li>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. </li></ul></ul>
  7. 7. Arquitetura <ul><li>Transaction </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Criteria e Query </li></ul><ul><ul><li>As interfaces Criteria e Query são utilizadas para realizar consultas ao banco de dados. </li></ul></ul>
  8. 8. Funcionamento <ul><li>O Hibernate configura-se como uma camada entre a aplicação e o banco de dados; </li></ul><ul><li>Uma classe Java é mapeada no Hibernate como uma tabela no banco; </li></ul><ul><li>Cada instância dessa classe corresponde a um registro da tabela alocado na memória; </li></ul><ul><li>O Hibernate define estes três tipos de estados: </li></ul><ul><ul><li>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; </li></ul></ul><ul><ul><li>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; </li></ul></ul>
  9. 9. Funcionamento <ul><li>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. </li></ul>
  10. 10. Funcionamento
  11. 11. Vantagens/Desvantagens <ul><li>Escrever menos código de persistência na aplicação; </li></ul><ul><li>Suporte para vários tipos de bancos de dados relacionais; </li></ul><ul><li>Uma vez feito o mapeamento, permite alterar o banco de dados sem ter que alterar a aplicação; </li></ul><ul><li>Possível perda de desempenho. </li></ul>
  12. 12. Outros Recursos <ul><li>Suporte a mais de 20 SGBD's; </li></ul><ul><li>Hibernate Query Language (HQL); </li></ul><ul><li>Criteria; </li></ul><ul><li>Interceptadores; </li></ul><ul><li>Cascateamento de operações; </li></ul><ul><li>Avançado sistema de cache de dois níveis; </li></ul><ul><li>Hibernate Validator; </li></ul><ul><li>Log. </li></ul>
  13. 13. HQL - Exemplo <ul><li>Session session = DAO.getSession(). </li></ul><ul><li>GrupoProduto grpr = session.load( GrupoProduto.class, 10 ); </li></ul><ul><li>session.createQuery( </li></ul><ul><li>“ SELECT prod FROM Produto prod WHERE prod.grupo = :grupo OR LOWER( prod.nome ) = LOWER( :nome )” </li></ul><ul><li>) </li></ul><ul><li>.setEntity( “grupo”, grpr ) </li></ul><ul><li>.setString( “nome”, “Bicicleta” ); </li></ul>
  14. 14. Criteria - Exemplo <ul><li>DAO.getSession().createCriteria( Produto.class, “prod” ).add( </li></ul><ul><li>Restrictions.or( </li></ul><ul><li>Restrictions.eq( “prod.grupo.id”, 100 ), </li></ul><ul><li>Restrictions.ilike( “prod.nome”, “Bicicleta” ) </li></ul><ul><li>) </li></ul><ul><li>); </li></ul>
  15. 15. Outros Frameworks ORM <ul><li>iBatis - http://ibatis.apache.org </li></ul><ul><li>OJB - http://db.apache.org/ojb </li></ul><ul><li>TopLink - http://www.oracle.com/technology/products/ias/toplink </li></ul><ul><li>Propel (PHP) - http://propel.phpdb.org </li></ul><ul><li>SQLObject (Python) - http://www.sqlobject.org </li></ul>
  16. 16. Referências <ul><li>http://www.hibernate.org </li></ul><ul><li>http://pt.wikipedia.org/wiki/Hibernate </li></ul><ul><li>http://pt.wikipedia.org/wiki/Mapeamento_objeto-relacional </li></ul><ul><li>http://www.devmedia.com.br/articles/viewcomp.asp?comp=4742 </li></ul><ul><li>http://waltercunha.com/blog/wp/uploads/hibernate_resumo.pdf </li></ul>

×