Você está na página 1de 36

Hibernate

Professor Marcelo Pacote @professorpacote

W W W. D O M I N A N D OT I .CO M . B R W W W. D O M I N A N D OT I .CO M . B R
Acesse nosso site em
WWW.DOMINANDOTI.COM.BR

Cursos Turmas em Braslia, na sua cidade, e cursos online


Livros Edies publicadas, lanamentos e promoes
Frum Interao direta entre estudantes e com os professores

Simulados Questes inditas, ranking de notas e correes em vdeo

Blog Dicas e macetes de estudo, indicaes de bibliografia, etc.

Materiais Verses atualizadas de notas de aula e listas de exerccios

Curta o Dominando TI no
e receba nossas dicas sobre concursos!

W W W. D O M I N A N D OT I .CO M . B R
Persistncia

Quase todo tipo de aplicao tem a necessidade de armazenar,


recuperar, editar e remover dados de alguma base de dados.
Se um sistema de informao no for capaz de preservar dados
quando for desligado, ele no ter um uso prtico.
A persistncia, na grande maioria das vezes, se refere ao
armazenamento de dados em um banco de dados relacional. Neste
caso, tradicionalmente usamos a linguagem SQL (Structured Query
Language).
JDBC

Professor Marcelo Pacote - @professorpacote 3 W W W. D O M I N A N D OT I .CO M . B R


Persistncia

Normalmente se refere preservao dos dados de uma aplicao alm


do tempo de vida da aplicao.
Em aplicaes orientadas a objetos, significa preservar o estado de
objetos e grafos de objetos interligados
Existem vrias formas de tornar os dados de uma aplicao persistentes
Grav-los (serializ-los) em um arquivo com Java Serialization.
Convert-los em XML usando ferramentas como JAXB.
Armazen-los em um banco de dados (vrias formas).
Armazen-los em sistema de arquivos ou outro meio de
armazenamento usando algoritmo prprio.

Professor Marcelo Pacote - @professorpacote 4 W W W. D O M I N A N D OT I .CO M . B R


Hibernate

Uma soluo no invasiva para persistncia de dados em


aplicaes Java:
No preciso aderir a padres de design especficos
(como nas primeiras verses de EJB) para que uma
aplicao tenha os benefcios da persistncia.
Torna fcil adicionar persistncia a objetos de aplicaes
existentes.
Uma das mais completas solues de ORM.
Open source.

Professor Marcelo Pacote - @professorpacote 5 W W W. D O M I N A N D OT I .CO M . B R


Hibernate (ORM)

Object-Relational Mapping:
Mapeamento Objeto-Relacional.
Soluo bem-sucedida de persistncia para objetos.
Objetivos:
Preservar as vantagens do paradigma relacional (robustez,
maturidade, facilidade de pesquisa, etc.) para a camada de
persistncia.
Preservar as vantagens do paradigma orientado a objetos
(reuso, modularidade, herana etc.) para a camada de
negcio.
Existem diversas implementaes de ORM.

Professor Marcelo Pacote - @professorpacote 6 W W W. D O M I N A N D OT I .CO M . B R


Hibernate

Hibernate x SQL
Hibernate gera cdigo SQL e automatiza processos
trabalhosos
HQL, linguagem de recuperao de dados, assemelha-se a
SQL.

Professor Marcelo Pacote - @professorpacote 7 W W W. D O M I N A N D OT I .CO M . B R


Persistncia Orientada a Objetos

Classes so mapeadas para tabelas.


Instncias (objetos) so mapeadas para registros.
Banco de Dados Relacional
Classe Conta
String codigo
String nome
double saldo
conta correntista saldo
1 Gargantua 1370 instncia:Conta
2 Pantagruel 3450 codigo="4"
3 Gargamel 800 nome="Morticia"
4 Morticia 8200 saldo=8200

Tabela Conta

Professor Marcelo Pacote - @professorpacote 8 W W W. D O M I N A N D OT I .CO M . B R


Como mapear herana?
1) Uma tabela por classe concreta
Dados no normalizados
Depende de um UNION para consultas na superclasse.
Ideal para hierarquias horizontais

2) Uma nica tabela para toda hierarquia de classes


Utiliza discriminator para diferenciar elementos da hierarquia.
Queries so feitas em uma nica tabela, que pode se tornar bastante grande.
Modelo mais simples. Modelo default. Ideal para hierarquias com poucas classes.

3) Uma tabela por classe da hierarquia


Permite associaes e consultas polimrficas
Dados normalizados. Sempre realiza join.
Usado em hierarquias de muitos nveis (verticais).

Professor Marcelo Pacote - @professorpacote 9 W W W. D O M I N A N D OT I .CO M . B R


Relacionamentos a questo da carga de dados

Em atributos, associaes e colees em entidades possvel


especificar o tipo de carga inicial.

Carga imediata (eager fetching)


Default para one-to-one e many-to-one

Carga preguiosa (lazy fetching)


Default para relacionamentos one-to-many e
many-to-many

Professor Marcelo Pacote - @professorpacote 10 W W W. D O M I N A N D OT I .CO M . B R


Hibernate

H dois modelos de programao:


Top down: a partir de um modelo e de classes
desenvolvidas em Java, gera-se o esquema do banco

Bottom up: a partir de um modelo de dados e esquema de


banco de dados pr-existente, deve-se usar engenharia
reversa para se ter o modelo de classes usado pelo
Hibernate (XML ou classes Java anotadas).

Professor Marcelo Pacote - @professorpacote 11 W W W. D O M I N A N D OT I .CO M . B R


Hibernate - Exemplo

1. Criar a tabela no banco de dados onde os objetos sero persistidos


(Tabela Pessoa);
2. Criar a Classe cujo estado ser persistido (Classe Pessoa);
3. Criar um XML (ou anotaes na classe Pessoa) que relaciona as
propriedades do objeto aos campos na tabela (Pessoa.hbm.xml);
4. Criar um arquivo de configurao para que o Hibernate se conecte ao
Banco de Dados (hibernate.cfg.xml) e, opcionalmente, uma configurao
para logs (log4j.properties);
5. Criar a classe DAO que vai persistir o objeto (Classe PessoaDAO).

Professor Marcelo Pacote - @professorpacote 12 W W W. D O M I N A N D OT I .CO M . B R


Hibernate Arquivo de mapeamento

<?xml version="1.0" encoding="UTF-8"?>


<hibernate-mapping>
<class name="Cliente" table="CLIENTE">
<id column="CLIENTE_ID" name="id" type="java.lang.Long">
<generator class="sequence"/>
</id>
<property column="NOME" length="50" name="nome" not-null="true"
type="java.lang.String" />
<property column="DATA_NASCIMENTO" name="nascimento"
type="java.util.Date" />
</class>
</hibernate-mapping>

Professor Marcelo Pacote - @professorpacote 13 W W W. D O M I N A N D OT I .CO M . B R


Hibernate Arquivo de configurao

<?xml version='1.0' encoding='UTF-8'?>


<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:postgresql://localhost/ex</property>
<property name="connection.username">postgres</property>
<property name="connection.driver_class">org.postgre.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreDialect</property>
<property name="connection.password">qwerty</property>
<property name="hibernate.show_sql">true</property>
<!-- mapping files -->
<mapping resource=br/gov/tcu/exemplo/NomeClasse.hbm.xml" />
</session-factory>
</hibernate-configuration>

Professor Marcelo Pacote - @professorpacote 14 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [01] (TJ-PI/2009/FCC) (1/2)

Hibernate uma ferramenta open-source que facilita a comunicao entre


aplicao Java e banco de dados, tais como manipulao de dados,
gerenciamento de transaes e pooling de conexes. A esse respeito,
considere o trecho de cdigo para configurao do Hibernate:

Professor Marcelo Pacote - @professorpacote 15 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [01] (TJ-PI/2009/FCC) (2/2)

Tendo em vista os dados acima, analise:


I. o cdigo exibe a estrutura bsica de um arquivo XML de mapeamento que
indica ao Hibernate como carregar e gravar os objetos de uma classe de
persistncia;
II. as declaraes de mapeamento esto circunscritas entre as tags
</hibernate-mapping>
III. o elemento < id > a declarao de uma propriedade identificadora de
tabela (chave-primria) e o atributo column="ID_PESSOA" indica qual o
campo na tabela ao qual ele est ligado.
correto o que consta em
a) I b) I e II c) I, II e III d) II e III e) I e III

Professor Marcelo Pacote - @professorpacote 16 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [02] (SECONT-ES/2009/CESPE)

( ) O Hibernate, um framework de mapeamento objeto


relacional (ORM), cria uma camada de persistncia na soluo
desenvolvida, o que permite ligar os objetos aos bancos de
dados relacionais. Entre seus servios, o Hibernate prov um
meio de se controlar transaes, por meio de mtodos de suas
interfaces session e transaction, tendo ainda suporte a herana.
distribudo sob a licena LGPL, o que permite seu uso em
projetos comerciais ou open source.

Professor Marcelo Pacote - @professorpacote 17 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [03] (INMETRO/2009/CESPE)

( ) Considerando que para o uso da tecnologia Hibernate na


linguagem Java so empregados, usualmente, dois tipos de
arquivos: (i) configurao e (ii) mapeamento, sendo a lista a
seguir uma sequncia de elementos XML utilizados na
tecnologia Hibernate: (a) hibernate-mapping (b) class; (c)
generator; (d) property; (e) session-factory; e (f) mapping, ento,
uma associao adequada entre os elementos e o tipo de
arquivo Hibernate, no qual eles usualmente so empregados,
a seguinte: {(a, ii), (b, ii), (c, i), (d, ii), (d, i), (e, i), (f, i)}.

Professor Marcelo Pacote - @professorpacote 18 W W W. D O M I N A N D OT I .CO M . B R


Consultas

API Criteria
Soluo para criao dinmica de consultas.

HQL:
SELECT c.name, cta
FROM Conta cta JOIN cta.cliente c
WHERE c.cidade = :cidade

possvel executar consultas SQL nativas

Professor Marcelo Pacote - @professorpacote 19 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [04] (TRE-BA/2010/CESPE)

( ) No Hibernate, apenas a linguagem de consulta HQL


(hibernate query language) pode ser utilizada. A HQL executa os
pedidos SQL sobre as classes de persistncia do Java em vez
de tabelas no banco de dados, o que diminui a distncia entre o
desenvolvimento das regras de negcio e o banco de dados.

Professor Marcelo Pacote - @professorpacote 20 W W W. D O M I N A N D OT I .CO M . B R


(Inpi/2013/Cespe/Desv./83, 85 e 86)

( ) O objeto Session Factory do Hibernate mantm o


mapeamento objeto relacional na sesso.
( ) A interface Criteria do Hibernate utilizada para realizar
consultas ao banco de dados.
( ) No Hibernate, caso o nome da classe seja diferente do nome
da tabela mapeada, necessrio informar, na anotao
@Table, o nome da tabela, por meio do atributo name.

Professor Marcelo Pacote - @professorpacote 21 W W W. D O M I N A N D OT I .CO M . B R


Hibernate - estados

* afetam todas as instncias de uma sesso


Professor Marcelo Pacote - @professorpacote 22 W W W. D O M I N A N D OT I .CO M . B R
Exerccio [05] (MPU/2007/FCC)

Objetos que tm uma representao no banco de dados, mas que no


fazem mais parte de uma sesso do Hibernate, o que significa que o
seu estado pode no estar mais sincronizado com o banco de dados,
so do tipo:

a) transient
b) detached
c) attached
d) persistent
e) consistent

Professor Marcelo Pacote - @professorpacote 23 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [06] (CEHAP/2009/CESPE)

No framework Hibernate, comum que uma instncia de uma


classe persistente tenha trs estados especficos. Assinale a
opo que contm esses trs estados.

a) plugged, disconnected, timewait


b) connected, disconnected, detached
c) transient, persistent, detached
d) transient, connected, timewait

Professor Marcelo Pacote - @professorpacote 24 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [07] (TJ-RO/2008/CESGRANRIO) (1/2)

Sobre o framework de mapeamento objeto/relacional Hibernate, correto


afirmar que
a) aps modificar um objeto que j est vinculado a uma session (sesso)
aberta, necessrio utilizar o mtodo update() do objeto session para que as
modificaes sejam gravadas no banco de dados.
b) um objeto se encontra no estado detached quando tiver sido criado com o
construtor new, estando ainda desvinculado de qualquer session (sesso) do
Hibernate.
c) um objeto gerenciado pelo Hibernate se encontra no estado transient
quando tiver sido criado vinculado a uma session (sesso) do Hibernate, mas
ainda no tiver sido gravado no banco de dados.

Professor Marcelo Pacote - @professorpacote 25 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [07] (TJ-RO/2008/CESGRANRIO) (2/2)

d) um objeto gerenciado pelo Hibernate se encontra no estado


persistent quando a session (sesso) a que o mesmo estava
vinculado foi fechada e, em conseqncia, o objeto j foi gravado
no banco de dados.

e) uma session do Hibernate no thread-safe, o que significa


que pode gerar resultados imprevisveis e instabilidade se uma
instncia for utilizada, simultaneamente, por mais de uma thread
da aplicao sem a devida sincronizao do acesso mesma.

Professor Marcelo Pacote - @professorpacote 26 W W W. D O M I N A N D OT I .CO M . B R


Gabarito dos Exerccios

[01] c
[02] certo
[03] errado
[04] errado
(Inpi/2013/Cespe/Desv./83, 85 e 86) ccc
[05] b
[06] c
[07] e

Professor Marcelo Pacote - @professorpacote 27 W W W. D O M I N A N D OT I .CO M . B R


Exerccios Complementares

Professor Marcelo Pacote @professorpacote

W W W. D O M I N A N D OT I .CO M . B R W W W. D O M I N A N D OT I .CO M . B R
Exerccio [1] (MPU-PERITO/2010/CESPE)

( ) Na instalao padro do Hibernate, o trecho de cdigo Java


abaixo permite a insero de 200.000 linhas em uma tabela no
banco de dados.

Professor Marcelo Pacote - @professorpacote 29 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [2] (TCU - AUDITOR/2010/CESPE) - adaptada

( ) A tecnologia Hibernate 3.5 possibilita a recuperao de


objetos por meio da formulao de queries em linguagens HQL
(hibernate query language) e SQL (structured query language),
bem como pelo uso de APIs (application programming
interfaces) de busca por critrio, entre outras.

Professor Marcelo Pacote - @professorpacote 30 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [3] (TRT22 - TCNICO/2010/FCC) (1/2)

Hibernate um framework
a) que separa as funes que envolvem a construo de aplicaes Web,
atravs da associao dos eventos do lado cliente com os manipuladores
dos eventos do lado do servidor.
b) pelo qual o programador utiliza a infraestrutura do servidor de aplicao
voltada para o desenvolvimento de aplicaes de misso crtica e de
aplicaes empresariais em geral.
c) no qual as questes de infraestrutura, segurana, disponibilidade e
escalabilidade so responsabilidade do servidor de aplicaes, permitindo
que o programador se concentre, apenas, nas necessidades do negcio do
cliente.

Professor Marcelo Pacote - @professorpacote 31 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [3] (TRT22 - TCNICO/2010/FCC) (2/2)

d) que permite ao desenvolvedor de pginas para internet


produzir aplicaes que acessem o banco de dados, manipulem
arquivos no formato texto e capturem informaes a partir de
formulrios.
e) cujo objetivo diminuir a complexidade entre os programas
Java que precisam trabalhar com um banco de dados do
modelo relacional.

Professor Marcelo Pacote - @professorpacote 32 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [4] (TRT14 ANALISTA TI/2011/FCC)

Quanto ao Hibernate no ambiente Java:


I. Sua principal caracterstica a transformao das classes Java
para tabelas de dados porm no dos tipos de dados Java para os
da SQL.
II. Nas aplicaes standalone, delega o tratamento transacional ao
driver JDBC.
III. Pode ser usado em aplicaes Java standalone ou em
aplicaes Java EE.
INCORRETO o que se afirma , APENAS em:
a) I b) II c) III d) I e III e) II e III

Professor Marcelo Pacote - @professorpacote 33 W W W. D O M I N A N D OT I .CO M . B R


Exerccio [5] (TRE-RN TEC. TI/2011/FCC)

No Hibernate,
a) executa operaes de busca, cadastro ou alterao de dados, sem
requerer mapeamento da tabela em arquivo XML.
b) INSERT a nica instruo SQL que requer utilizao pelo desenvolvedor.
c) os dados tabulares de um banco de dados so transformados em um
grafo de objetos definido pelo desenvolvedor.
d) a soluo aos ambientes Java de mapeamento objeto/relacional
proporcionada pela abstrao de toda a parte de representao de tipo de
dados por meio de arquivos HTML.
e) o desenvolvedor pode acessar diretamente uma tabela de banco de
dados, bastando, para isso, abrir uma conexo.

Professor Marcelo Pacote - @professorpacote 34 W W W. D O M I N A N D OT I .CO M . B R


[6] (Correios/2011/Cespe/Desv./58)

( ) No Hibernate, o recurso Query Cache possibilita fazer o


cache de queries que so executadas vrias vezes.

Professor Marcelo Pacote - @professorpacote 35 W W W. D O M I N A N D OT I .CO M . B R


Gabarito dos Exerccios Complementares

[01] errado
[02] certo
[03] e
[04] a
[05] c
[06] certo

Professor Marcelo Pacote - @professorpacote 36 W W W. D O M I N A N D OT I .CO M . B R