SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Hibernate
JDBC – Definição
Java Database Connectivity é um conjunto de classes e interfaces
(API) escritas em Java que fazem o envio de instruções SQL para
qualquer banco de dados relacional.
Serve para estabelecer conexões, executar consultas, obter
informações sobre o banco de dados, tabelas e gerenciar transações.
Para acessar o BD é necessário um driver fornecido pelo
desenvolvedor do SGBD que deseja utilizar.
O driver é um arquivo .jar, que deve ser escolhido de acordo com qual
String de conexão você utilizar e deve te-lo em seu classpath.
JDBC - API
SQLInput
SQLOutput
SQLType
SQLData
DriverPropertyInfo
Struct
StructLocator
ArrayLocator
BlobLocator
ClobLocator
Ref
Connection
ResultSet
Statement
PreparedStatement
CallableStatement
ResultSetMetaData
DatabaseMetaData
Driver
DriverManager
Types
Time
Date
TimeStamp
Java.lang.Object
Java.sql.Date
Interfaces
Classes
Hibernate - Definição
Criado por Gavin King 2001
O Hibernate é um framework de persistência para o mapeamento
objeto-relacional (ORM) escrito na linguagem Java.
• Suporte: DB2 AS/400, PostgreSQL, Microsoft SQL Server 2000,
Microsoft SQL Server 2005, Microsoft SQL Server 2008, SAP DB,
HypersonicSQL, H2 Database, Progress, Mckoi SQL, Interbase,
FrontBase, Firebird, entre outros.
Hibernate
• Após o sucesso do Hibernate, a especificação JPA (Java Persistence
API) foi criada com o objetivo de padronizar as ferramentas ORM
para aplicações Java e consequentemente diminuir a complexidade
do desenvolvimento.
Hibernate
• É framework de open source útil para mapear os objetos no Java
com as tabelas com eficiência.
• Leitura e escrita de objetos em suporte persistente no contexto de
uma unidade de trabalho.
• Uma unidade de trabalho regista todas as operações de uma
transação de negócio que podem afetar a base de dados. Quando
uma unidade de trabalho termina com sucesso, as operações
registadas são propagadas para a base de dados. Se a unidade de
trabalho abortou, todas as operações registadas são descartadas,
como se a unidade de trabalho nunca tivesse existido.
Hibernate - Funcionamento
Application
POJOs
Hibernate.cfg.xml
JDBC
Database
Object Mapping xml
Session Factory
Session
Hibernate faz uso de objetos
persistentes: POJO ( Plain Old Java
Objects ).
As instâncias desta interface são leves
e são baratas para criar e destruir.
As sessões são thread-safe e permite
a criação de objetos de consulta para
recuperar objetos persistentes.
Ele também permite a conection-
factory para transações e cache
obrigatória de objetos persistentes ,
usado quando se navega pelo
identificador .
Hibernate – POJO (Estados possíveis de instâncias )
• transiente (transient) - é um objeto instanciado pela aplicação, que não
está, nem nunca esteve, associado a uma unidade de trabalho. Os seus
dados não estão armazenados de forma persistente.
• persistente (persistent) - quando tem uma identidade persistente
associada e os seus dados estão (ou serão) armazenados de forma
persistente. Está associado a uma única unidade de trabalho, garantindo-
se que, para essa unidade de trabalho.
• destacado (detached) - é um objeto que já esteve associado a uma
unidade de trabalho, mas a associação já não existe (a unidade de
trabalho terminou ou o objeto foi explicitamente destacado).
Hibernate - Arquitetura
Java Application
Objetos Persistidos
Produto Cliente Pedido Produto
HibernateConfiguration
JTA
Database
Transaction Query Session Factory
Session
Criteria
JDBC JNDI
Hibernate – Componentes da Arquitetura
• Hibernate SessionFactory: A instância do SessionFactory é usado para obter o
objeto de sessão. SessionFactory é “thread-safe” e cada objeto de sessão é
criado numa thread diferente. A instância do SessionFactory é imutável
• Hibernate Session: A interface Session fornece a API para aplicações Java para
interagir com o banco de dados. Através desta interface o desenvolvedor pode
escrever o código para operação de CRUD .
• Hibernate Transaction: É usado para manter a transação. Baseado na
configuração pode usar o componente de gerenciamento de transação do
Hibernate ou JTA. E fornece a API para a gestão eficiente das transações.
• Hibernate Query Language: O Hibernate Query Language também é conhecido
como HQL é como simples SQL , mas opera na classe POJO.
• Hibernate Criteria: Query Criteria é usado para consultar o banco de dados
baseado em conjunto de critérios.
Hibernate - Implantação
• Todas as classes Java que serão persistidas precisam de um
construtor padrão.
• Todas as classes devem conter uma identificação, a fim de permitir
a fácil identificação de seus objetos dentro de Hibernate e banco de
dados. Esta propriedade mapeia para a coluna de chave primária de
uma tabela de banco de dados .
• Todos os atributos que serão persistido deve ser declarado privada
e ter métodos getXXX e setXXX definido no estilo JavaBean.
Hibernate - Implantação
• Public class User{
• private long id;
• private String name;
• public User(){
• }
• //geters e seters
• }
Hibernate - Implantação
Database Connection : Isso é tratado por meio de um ou mais
arquivos de configuração suportados pelo Hibernate . Esses arquivos
são hibernate.properties (“old style”) ou hibernate.cfg.xml (Session)
ou persistence.xml (EntityManage).
Configuração de Mapeamento de Classe
Este componente cria a conexão entre as classes Java e tabelas de
banco de dados. Arquivos <classname>.Hbm.xml ou anotações.
hibernate.cfg.xml
• É nesse arquivo que configuramos:
• hibernate.connection.username: usuário do banco de dados
• hibernate.connection.password: senha do usuário
• hibernate.connection.url: chamada de URL ou string de conexão, deve
ser configurada de acordo com documentação do banco de dados
• hibernate.connection.driver_class: driver que deve ser utilizado
• hibernate.hbm2ddl.auto: indica como o hibernate vai se comportar em
relação às tabelas do banco.
• hibernate.dialect: dialeto a ser utilizado para a comunicação com o
banco de dados
• show_sql – flag: indica se os SQLs gerados devem ser impressos
• format_sql – flag: indica se os SQLs devem ser formatados
• Entre outros...pool_size, autocommit, etc.
Hibernate – Mapping
• Os elementos <class> são usados ​​para definir os mapeamentos
específicos de uma classes Java para tabelas de banco de dados;
• O elemento <meta> é elemento opcional e pode ser usado para criar a
descrição da classe;
• O elemento <id> mapeia o atributo ID único na classe para a chave
primária da tabela de banco de dados;
• O elemento <generator> dentro do elemento id é usado para gerar
automaticamente os valores de chave primária.
• O elemento <property> é usado para mapear uma propriedade de classe
Java para uma coluna na tabela do banco de dados.
Hibernate - Anotações
• @Entity - identificar uma classe como persistente
• @Table - associa a classe persistente a uma tabela com nome definido
• @Id - identificador da classe (chave primária da tabela)
• @GeneratedValue - Define mecanismo para gerar a chave primária. –
GenerationType define a estratégia de geração.
• Todos os atributos não static e não transientes de um objeto persistente
são por omissão persistentes
• @Column – Informa o nome da coluna mapeada para o atributo, se ela
pode ser nula ou única.
Hibernate - Anotações
• @Enumerated – Representação explicíta de um Enum;
• @Temporal – Usada para mapear datas e/ou horas.
• @Lob – Utilizado para atributos que armazenam textos muito
grandes;
• @Transient – Serve para indicar um atributo que não deve ser
persistido;
•
Hibernate - Mapear associações entre classes
persistentes
• @Entity
• @Table(name=“usuario_sistema”)
• public class User{
• @Id
• private Long id;
• @OneToMany
• @JoinTable(
• name = “Perfis",
• joinColumns = @JoinColumn(name = “perfilCode"),
• inverseJoinColumns = @JoinColumn(name = “userRef")
• )
• private Set<Perfil> perfis; ... }
Hibernate - Mapear associações entre classes
persistentes
• CREATE TABLE User (
• id BIGINT NOT NULL PRIMARY KEY, ... );
• CREATE TABLE Perfis (
• perfilCode BIGINT NOT NULL REFERENCES Perfil(id),
• userRef BIGINT NOT NULL UNIQUE REFERENCES User(id)
• PRIMARY KEY (airlineCode, planeNumber), );
Hibernate – Persistence class
• EntityManagerFactory factory =
Persistence.createEntityManagerFactory(“NomedoBanco");
• EntityManager manager = factory.createEntityManager();
• manager.persist(newuser)
• manager.find(newuser)
• manager.remove(newuser)
• manager.getTransaction().begin();
• manager.getTransaction().commit();
Hibernate – Maven
• <dependency>
• <groupId>org.hibernate</groupId>
• <artifactId>hibernate-core</artifactId>
• <version>4.2.7.Final</version>
• </dependency>
Hibernate - Vantagens
• Hibernate suporta a herança, Associações, Coleções;
• Hibernate suporta relacionamentos como um-para- muitos, um -
para-um , muitos-para- muitos-para -muitos, muitos -para-um;
• Integração com vários tipos de SGBDs;
• HQL contém comandos independentes de banco de dados;
• O Hibernate suporta mecanismo de cache por isso, o número de
viagens entre um aplicativo e o banco de dados é reduzido, usando
esta técnica de armazenamento em cache um desempenho de
aplicativos serão automaticamente aumentados;
Hibernate – Desvantagens
• ...
• Muita API para aprender: Uma grande quantidade de esforço é
necessário para aprender Hibernate. Então, não é muito fácil de
aprender hibernate facilmente.
Depuração: Às vezes a depuração e ajuste de desempenho torna-se
difícil.
Mais lento do que JDBC: Hibernate é mais lento que o JDBC puro
como ele está gerando muitas instruções SQL em tempo de
execução.
Hibernate - Concorrentes
• Enterprise JavaBeans Entity Beans
• Java Data Objects
• Castor
• TopLink
• Spring DAO
• Hibernate
• …
Referências
• http://javafree.uol.com.br/wiki/hibernate
• http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/html/
• http://www.devmedia.com.br/configurando-hibernate-passo-a-
passo/28652
• http://blog.caelum.com.br/as-novidades-do-hibernate-4/
• http://www.tutorialspoint.com/hibernate/index.htm
• Hibernate 4: The Next Generation de RedHatVideos:
http://www.youtube.com/watch?v=sBBVwOC9o_Y

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Apiguestf54162
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINTchelinux
 
Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012Frederico Maia Arantes
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simplesLukinha92
 

Was ist angesagt? (12)

Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Api
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Java 14
Java 14Java 14
Java 14
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEIN
 
Tag Libraries
Tag LibrariesTag Libraries
Tag Libraries
 
Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012
 
J530 3 jndi
J530 3 jndiJ530 3 jndi
J530 3 jndi
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples
 

Ähnlich wie Hibernate

Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBAdriano Teixeira de Souza
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos Raquel Machado
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3Joel Lobo
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objetoelliando dias
 
Resumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer
Resumo Anotacoes Certificacao OCE WebLogic Portal 10g DeveloperResumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer
Resumo Anotacoes Certificacao OCE WebLogic Portal 10g DeveloperGilberto Holms
 
[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-First[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-FirstVitor Tomaz
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Maurício Linhares
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistenciaRoberson Alves
 

Ähnlich wie Hibernate (20)

Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
Hibernate
HibernateHibernate
Hibernate
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Persistência JPA
Persistência JPAPersistência JPA
Persistência JPA
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objeto
 
Resumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer
Resumo Anotacoes Certificacao OCE WebLogic Portal 10g DeveloperResumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer
Resumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-First[NetPonto] Entity Framework 4 Code-First
[NetPonto] Entity Framework 4 Code-First
 
Entity Framework 4 Code-First
Entity Framework 4 Code-FirstEntity Framework 4 Code-First
Entity Framework 4 Code-First
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 

Hibernate

  • 2. JDBC – Definição Java Database Connectivity é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional. Serve para estabelecer conexões, executar consultas, obter informações sobre o banco de dados, tabelas e gerenciar transações. Para acessar o BD é necessário um driver fornecido pelo desenvolvedor do SGBD que deseja utilizar. O driver é um arquivo .jar, que deve ser escolhido de acordo com qual String de conexão você utilizar e deve te-lo em seu classpath.
  • 4. Hibernate - Definição Criado por Gavin King 2001 O Hibernate é um framework de persistência para o mapeamento objeto-relacional (ORM) escrito na linguagem Java. • Suporte: DB2 AS/400, PostgreSQL, Microsoft SQL Server 2000, Microsoft SQL Server 2005, Microsoft SQL Server 2008, SAP DB, HypersonicSQL, H2 Database, Progress, Mckoi SQL, Interbase, FrontBase, Firebird, entre outros.
  • 5. Hibernate • Após o sucesso do Hibernate, a especificação JPA (Java Persistence API) foi criada com o objetivo de padronizar as ferramentas ORM para aplicações Java e consequentemente diminuir a complexidade do desenvolvimento.
  • 6. Hibernate • É framework de open source útil para mapear os objetos no Java com as tabelas com eficiência. • Leitura e escrita de objetos em suporte persistente no contexto de uma unidade de trabalho. • Uma unidade de trabalho regista todas as operações de uma transação de negócio que podem afetar a base de dados. Quando uma unidade de trabalho termina com sucesso, as operações registadas são propagadas para a base de dados. Se a unidade de trabalho abortou, todas as operações registadas são descartadas, como se a unidade de trabalho nunca tivesse existido.
  • 7. Hibernate - Funcionamento Application POJOs Hibernate.cfg.xml JDBC Database Object Mapping xml Session Factory Session Hibernate faz uso de objetos persistentes: POJO ( Plain Old Java Objects ). As instâncias desta interface são leves e são baratas para criar e destruir. As sessões são thread-safe e permite a criação de objetos de consulta para recuperar objetos persistentes. Ele também permite a conection- factory para transações e cache obrigatória de objetos persistentes , usado quando se navega pelo identificador .
  • 8. Hibernate – POJO (Estados possíveis de instâncias ) • transiente (transient) - é um objeto instanciado pela aplicação, que não está, nem nunca esteve, associado a uma unidade de trabalho. Os seus dados não estão armazenados de forma persistente. • persistente (persistent) - quando tem uma identidade persistente associada e os seus dados estão (ou serão) armazenados de forma persistente. Está associado a uma única unidade de trabalho, garantindo- se que, para essa unidade de trabalho. • destacado (detached) - é um objeto que já esteve associado a uma unidade de trabalho, mas a associação já não existe (a unidade de trabalho terminou ou o objeto foi explicitamente destacado).
  • 9. Hibernate - Arquitetura Java Application Objetos Persistidos Produto Cliente Pedido Produto HibernateConfiguration JTA Database Transaction Query Session Factory Session Criteria JDBC JNDI
  • 10. Hibernate – Componentes da Arquitetura • Hibernate SessionFactory: A instância do SessionFactory é usado para obter o objeto de sessão. SessionFactory é “thread-safe” e cada objeto de sessão é criado numa thread diferente. A instância do SessionFactory é imutável • Hibernate Session: A interface Session fornece a API para aplicações Java para interagir com o banco de dados. Através desta interface o desenvolvedor pode escrever o código para operação de CRUD . • Hibernate Transaction: É usado para manter a transação. Baseado na configuração pode usar o componente de gerenciamento de transação do Hibernate ou JTA. E fornece a API para a gestão eficiente das transações. • Hibernate Query Language: O Hibernate Query Language também é conhecido como HQL é como simples SQL , mas opera na classe POJO. • Hibernate Criteria: Query Criteria é usado para consultar o banco de dados baseado em conjunto de critérios.
  • 11. Hibernate - Implantação • Todas as classes Java que serão persistidas precisam de um construtor padrão. • Todas as classes devem conter uma identificação, a fim de permitir a fácil identificação de seus objetos dentro de Hibernate e banco de dados. Esta propriedade mapeia para a coluna de chave primária de uma tabela de banco de dados . • Todos os atributos que serão persistido deve ser declarado privada e ter métodos getXXX e setXXX definido no estilo JavaBean.
  • 12. Hibernate - Implantação • Public class User{ • private long id; • private String name; • public User(){ • } • //geters e seters • }
  • 13. Hibernate - Implantação Database Connection : Isso é tratado por meio de um ou mais arquivos de configuração suportados pelo Hibernate . Esses arquivos são hibernate.properties (“old style”) ou hibernate.cfg.xml (Session) ou persistence.xml (EntityManage). Configuração de Mapeamento de Classe Este componente cria a conexão entre as classes Java e tabelas de banco de dados. Arquivos <classname>.Hbm.xml ou anotações.
  • 14. hibernate.cfg.xml • É nesse arquivo que configuramos: • hibernate.connection.username: usuário do banco de dados • hibernate.connection.password: senha do usuário • hibernate.connection.url: chamada de URL ou string de conexão, deve ser configurada de acordo com documentação do banco de dados • hibernate.connection.driver_class: driver que deve ser utilizado • hibernate.hbm2ddl.auto: indica como o hibernate vai se comportar em relação às tabelas do banco. • hibernate.dialect: dialeto a ser utilizado para a comunicação com o banco de dados • show_sql – flag: indica se os SQLs gerados devem ser impressos • format_sql – flag: indica se os SQLs devem ser formatados • Entre outros...pool_size, autocommit, etc.
  • 15. Hibernate – Mapping • Os elementos <class> são usados ​​para definir os mapeamentos específicos de uma classes Java para tabelas de banco de dados; • O elemento <meta> é elemento opcional e pode ser usado para criar a descrição da classe; • O elemento <id> mapeia o atributo ID único na classe para a chave primária da tabela de banco de dados; • O elemento <generator> dentro do elemento id é usado para gerar automaticamente os valores de chave primária. • O elemento <property> é usado para mapear uma propriedade de classe Java para uma coluna na tabela do banco de dados.
  • 16. Hibernate - Anotações • @Entity - identificar uma classe como persistente • @Table - associa a classe persistente a uma tabela com nome definido • @Id - identificador da classe (chave primária da tabela) • @GeneratedValue - Define mecanismo para gerar a chave primária. – GenerationType define a estratégia de geração. • Todos os atributos não static e não transientes de um objeto persistente são por omissão persistentes • @Column – Informa o nome da coluna mapeada para o atributo, se ela pode ser nula ou única.
  • 17. Hibernate - Anotações • @Enumerated – Representação explicíta de um Enum; • @Temporal – Usada para mapear datas e/ou horas. • @Lob – Utilizado para atributos que armazenam textos muito grandes; • @Transient – Serve para indicar um atributo que não deve ser persistido; •
  • 18. Hibernate - Mapear associações entre classes persistentes • @Entity • @Table(name=“usuario_sistema”) • public class User{ • @Id • private Long id; • @OneToMany • @JoinTable( • name = “Perfis", • joinColumns = @JoinColumn(name = “perfilCode"), • inverseJoinColumns = @JoinColumn(name = “userRef") • ) • private Set<Perfil> perfis; ... }
  • 19. Hibernate - Mapear associações entre classes persistentes • CREATE TABLE User ( • id BIGINT NOT NULL PRIMARY KEY, ... ); • CREATE TABLE Perfis ( • perfilCode BIGINT NOT NULL REFERENCES Perfil(id), • userRef BIGINT NOT NULL UNIQUE REFERENCES User(id) • PRIMARY KEY (airlineCode, planeNumber), );
  • 20. Hibernate – Persistence class • EntityManagerFactory factory = Persistence.createEntityManagerFactory(“NomedoBanco"); • EntityManager manager = factory.createEntityManager(); • manager.persist(newuser) • manager.find(newuser) • manager.remove(newuser) • manager.getTransaction().begin(); • manager.getTransaction().commit();
  • 21. Hibernate – Maven • <dependency> • <groupId>org.hibernate</groupId> • <artifactId>hibernate-core</artifactId> • <version>4.2.7.Final</version> • </dependency>
  • 22. Hibernate - Vantagens • Hibernate suporta a herança, Associações, Coleções; • Hibernate suporta relacionamentos como um-para- muitos, um - para-um , muitos-para- muitos-para -muitos, muitos -para-um; • Integração com vários tipos de SGBDs; • HQL contém comandos independentes de banco de dados; • O Hibernate suporta mecanismo de cache por isso, o número de viagens entre um aplicativo e o banco de dados é reduzido, usando esta técnica de armazenamento em cache um desempenho de aplicativos serão automaticamente aumentados;
  • 23. Hibernate – Desvantagens • ... • Muita API para aprender: Uma grande quantidade de esforço é necessário para aprender Hibernate. Então, não é muito fácil de aprender hibernate facilmente. Depuração: Às vezes a depuração e ajuste de desempenho torna-se difícil. Mais lento do que JDBC: Hibernate é mais lento que o JDBC puro como ele está gerando muitas instruções SQL em tempo de execução.
  • 24. Hibernate - Concorrentes • Enterprise JavaBeans Entity Beans • Java Data Objects • Castor • TopLink • Spring DAO • Hibernate • …
  • 25. Referências • http://javafree.uol.com.br/wiki/hibernate • http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/html/ • http://www.devmedia.com.br/configurando-hibernate-passo-a- passo/28652 • http://blog.caelum.com.br/as-novidades-do-hibernate-4/ • http://www.tutorialspoint.com/hibernate/index.htm • Hibernate 4: The Next Generation de RedHatVideos: http://www.youtube.com/watch?v=sBBVwOC9o_Y