2015/06/02
2014/08/03
JPA2 - Arquivo padrão persistence.xml
Pra você que esta iniciando os estudos do JPA 2, este é o arquivo de configuração padrão que deverá utilizar nos seus projetos. Inclusive coloquei a propriedade hibernate.hbm2ddl.auto que serve para criar/atualizar as tabelas do seu banco toda vez que o projeto é inicializado. Muito útil pra desenvolvimento !
Na linha 8 definimos o nome da nossa unidade de persistência, isto serve para identificar um perfil de conexão, desta forma podemos criar vários perfies (para vários tipos de bancos). O resto de linhas acho que não precisam de explicação.
Qualquer dúvida podem comentar !
2014/07/27
Conectando com o banco via Hibernate
hibernate.cfg.xml
Este é o arquivo de configuração do Hibernate, deve estar no pacote raiz das fontes do seu projeto.HibernateUtil.java
Criamos a nossa classe de conexão hibernate !Linha 12: Instanciamos a configuração carregando o hibernate.cfg.xml
Linha 13: Retornamos todos os parâmetros da conexão já configurada
Linha 20: Método público que retorna a conexão
ConectaHibernate.java
Agora criamos uma classe para fazer um teste com o nosso banco.Resultado
Se estiver utilizando Maven, este é meu pom.xml
Significado das siglas Hibernate, EJB3 e JPA
Hibernate
É uma ferramenta para realizar o mapeamento de objeto/relacional de forma completa e que contém todos os benefícios da tecnologia ORM. Existem outras como OpenJPA da Apache por exemplo, mas todas devem seguir a especificação JPA. Hibernate se divide em três softwares:
- Hibernate Core: Base do conjunto de soluções para persistência (API nativa). Tem uma linguagem própria estilo SQL denominado HQL e conta com interfaces para realização de consultas como Criteria.
- Hibernate Annotations: Tags que são chamadas de anotações. Segue o padrão JPA mas também implementam anotações próprias. Reduz o número de linhas consideravelmente.
- Hibernate EntityManager: É quem realiza as operações de persistência.
EJB 3
É uma arquitetura de componentes multiplataforma criada para o desenvolvimento de aplicações Java que sejam multicamadas, distribuídas, escaláveis e orientadas a objetos. O objetivo é facilitar o trabalho do desenvolvedor para que ele não tenha que se preocupar com aspectos de infraestrutura.
As principais frentes são:
- Session Bean: Determinamos que as instâncias possuem um determinado período de tempo. Utilizado pra realizar operações de negócios específicas.
- Entity Bean: Mapeamento de um banco de dados relacional por meio de arquivo de mapeamento.
- Message Driven Beans: Consumidores assíncronos de mensagens de filas. São invocados por meio de mensagens enviadas ao servidor de mensagens. Permite que os componentes do sistema se comuniquem.
JPA
É parte da especificação EJB e é implementada pela maioria das tecnologias ORM. Ela gerencia entidades, mapeamentos, interfaces para gerenciar a persistência e linguagem de consulta.
Framework Collections - Interface Set - Classe ArrayList
É a classe mais popular e utilizada na linguagem Java. Internamente, quando instanciamos um ArrayList, estamos criando um array dinâmico de objetos. Caso não definamos o tamanho do nosso ArrayList, sua capacidade será de 10 elementos. Toda vez que o tamanho do ArrayList é incrementado, ocorre internamente uma realocação criando um novo array com o novo tamanho.
É recomendado usar esta classe quando sabemos o tamanho aproximado que irá ser alocado. Pois a realocação consome recursos. Também devemos usar quando realizamos operações de inserção e deleção na maior parte das vezes no fim da lista, pra evitar deslocamentos. E por último quando a lista for mais lida do que modificada, pois seu uso é otimizado para leitura aleatória.
É recomendado usar esta classe quando sabemos o tamanho aproximado que irá ser alocado. Pois a realocação consome recursos. Também devemos usar quando realizamos operações de inserção e deleção na maior parte das vezes no fim da lista, pra evitar deslocamentos. E por último quando a lista for mais lida do que modificada, pois seu uso é otimizado para leitura aleatória.
Conceito ORM
ORM - Object Relational Mapping
É uma forma automatizada e transparente de persistir objetos que pertecem a uma aplicação nas respectivas tabelas em um banco relacional. Podemos usar pra isso tecnologias como Hibernate, que descrevem como realizar esse mapeamento entre objeto e banco de dados.A essência de trabalhar com ORM é realizar a transformação de dados de uma forma para outra de maneira reversível. Como todas decisões que temos que empregar no uso da arquitetura de um sistema, ao utilizar esta técnica de mapeamento traz comoconsequência uma possível queda de desempenho no aplicativo. Porém, o emprego da técnica traz mais benefícios que prejuízos. Dentre eles:
- Uma API para realizar as operações CRUD básicas em objetos de classes persistentes. Isto quer dizer que para realizar as principais ações (Select, Insert, Update, etc...) não é preciso criar a típica:
A API já faz isso pra gente ! - Uma linguagem ou API para especificar consultas que se referem às classes ouàs propriedades das classes. Podemos realizar consultas mais específicas.
- Podemos especificar o metadado de mapeamento de uma forma muito fácil, via anotações.
- Verificações de leitura dos objetos transacionais (dirty checking) ou carregamento sob demanda (lazy association fetching.
Hibernate é uma aplicação do tipo ORM ! \o/