JPA Implementation Patterns
Depois de descobrir a falta de documentação efetiva de como usar o JPA na vida real, Vincent Partington documentou uma série de patterns com o objetivo de ajudar e direcionar os projetistas a elaborem suas camadas de persistencias utilizando o JPA. Segue um resumo abaixo:
Basic patterns
- Data Access Objects
- Saving (detached) entities
- Retrieving entities
- Removing entities
- Service Facades and Data Transfers Objects
Advanced patterns
- Bidirectional assocations
- Lazy loading
- Bidirectional associations vs. lazy loading
- Using UUIDs as primary keys (guest blog by Albert Sikkema)
- Field access vs. property access
- Mapping inheritance hierarchies
- Testing
Os padrões são muito interessantes e bem práticos…abrindo a cabeça para novas possibilidades de reutilização, manutenção e economia de código. Vale a pena detonar o material =D .
“Não digas: Vingar-me-ei do mal; espera pelo Senhor, e ele te livrará.” Provérbios 20:22
Comparando implementações JPA
Este artigo apresenta um post com uma experiência muito interessante, onde o autor do blog idealiza e submete diferentes implementações JPA mais badaladas da atualidade( TopLink, EclispeLink, Hibernate e OpenJPA) a testes de performance. Alem de ler as conclusões finais do autor no artigo, vc ainda pode fazer o download do teste e refazer em seu ambiente.
O teste se resumiu em um simples programa que executava algumas consultas e inserts em um MySQL através da especificação do JPA. Quatro teste foram executados com o mesmo código, somente mudando a implementação dos vendores. Neles foram monitorados os recursos usados pela JVM e contados os números de insert e select executados durante o teste. Veja um resumo :
| Number of queries+inserts executed | Number of queries executed | Number of inserts executed | Max mem occupied during the test(Mb) | Mem occupied after the test(Mb) | |
| OpenJPA | 3928 | 3530 | 398 | 96 | 61 |
| Hibernate | 12687 | 3080 | 9607 | 130 | 79 |
| Toplink | 5720 | 3740 | 1980 | 55 | 25 |
| Eclipselink | 5874 | 3735 | 2139 | 57 | 25 |
Para maiores detalhes, veja o artigo completo e faça suas conclusões.
“Até um tolo pode passar por sábio e inteligente se ficar calado.” Provérbios 17:28.
Reference Card JPA
Hoje foi liberado o download do reference card sobre o JPA. Seguindo a mesma linha dos outros….vale a pena obter mais este ótimo material de referência rápido. Faça donwload aqui.
Provedores de JPA
Segue um lista completa de provedores para JPA:
Hibernate – Umas da implementações mais maduras (uma vez que ele foi referência para a criação da especificação), provedor oficial do JBOSS, diversas extensões proprietárias e um bom livro de referência.
TopLink – Implementação da oracle, algumas extensões proprietárias, provedor oficial do GLASSFISH e não tem livro de referência.
OpenJPA – Implementação da ASF, aparenta ser um boa opção uma vez que apache sempre tem disponibilizado bons produtos.
JPox – Implementação da empresa Java Persistent Objects, não popular.
Amber – Implementação não popular.
Se fosse indicar alguma eu não teria dúvida de que a implementação do Hibernate é TOP, uma vez que a empresa tem liderado há algum tempo o mercado relacionado com ORM.
Detone seu SGDB com POJINHOS
!!
EntityManager em Aplicativos Web Standalone
Segue algumas das estratégias que podem ser utilizados na implementação de uma camada de persistência utilizando o JPA em aplicativos web standalone:
1. Abrir e fechar um EntityManager por operação de negocio (quando precisar)
2. Abrir e fechar um EntityManager por HttpRequest (Usando Filter Servlet + atributos de ThreadLocal)
3. Abrir e fechar um EntityManager por HttpSession (Extendida)
Camada de Persistência ORM
Atualmente não existe dúvidas que o paradigma de programação mais usado na produção de sistemas é o Orientado a Objetos. Em contra partida, o mecanismo de armazenamento persistente mais utilizado ainda são os sistemas de gerenciamento de banco de dados relacional. Este fator (sem entrar em detalhes justificativos) foi que impulsionou o surgimento do conceito do mapeamento objeto-relacional ORM.
Ao passar dos anos, os frameworks ORM em java foram surgindo dia após dia com o objetivo de oferecer genericamente esta camada intermediária entre a aplicação e o SGBD, minimizando tempo, esforço, custo etc. Fato é que o conceito ORM e as opções de frameworks entraram em proporções enormes, transformando-se de uma simples camada para uma decisão não-trivial e amplamente complexa.
Veja aqui um ótimo artigo que aborda tais fatos, apresentando importantes informação de como, quando, porque e quais usar ORM usar. Veja aqui algumas opções de frameworks de persistência ORM e não ORM.
Bons estudos a todos
Artigos sobre JPA
Continuando com uns dos assuntos mais badalado do momento, segue ai mais alguns artigos previamente selecionados com dicas importantes JPA:
Para aqueles quem tem o interesse comprar um bom livro como referencia completa pode sem receio adquirir o Enterprise JavaBeans 3.0 que tem 6 capítulos (5,6,7,8,9,10) totalmente dedicados para JPA (tanto para containers EJB e aplicativos standalone) que na minha modesta opinião o melhor material que estudei.
Com o post de JPA anterior + este, tem material de sobra para detonar seu SGBD com OBJETOS JAVA
16/07/2009
20/01/2009
22/09/2008