Hibernate

324 visualizações

Publicada em

Apresentação sobre hibernate

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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

Nenhuma nota no slide

Hibernate

  1. 1. Hibernate
  2. 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.
  3. 3. 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
  4. 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. 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. 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. 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. 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. 9. Hibernate - Arquitetura Java Application Objetos Persistidos Produto Cliente Pedido Produto HibernateConfiguration JTA Database Transaction Query Session Factory Session Criteria JDBC JNDI
  10. 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. 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. 12. Hibernate - Implantação • Public class User{ • private long id; • private String name; • public User(){ • } • //geters e seters • }
  13. 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. 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. 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. 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. 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. 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. 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. 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. 21. Hibernate – Maven • <dependency> • <groupId>org.hibernate</groupId> • <artifactId>hibernate-core</artifactId> • <version>4.2.7.Final</version> • </dependency>
  22. 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. 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. 24. Hibernate - Concorrentes • Enterprise JavaBeans Entity Beans • Java Data Objects • Castor • TopLink • Spring DAO • Hibernate • …
  25. 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

×