JPA: Toplink Essentials vs Hibernate
É práctica estabelecida criar uma solução de software dividindo em diversas camadas: uma para interacção com bases de dados outra que suporte o modelo de negócio e outra com o interface para o utilizador. É claro que o número de camadas pode variar de 1 para ‘n’. Cada camada está isolada das restante, fornecendo um desenho modular, com interfaces entre elas claramente definidas.
A interacção com bases de dados obriga a lançar montes de SQLs contra a base de dados para qualquer actividade. Estas instruções SQL devem ser modificadas manualmente, e há sempre oportunidades para erro quando se modificam as entidades na base de dados ou as classes no código ou as próprias instruções SQL (nem vale a pena falar já nos diferentes dialectos SQL para cada vendedor).
Por isso, são sempre bem-vindas as ferramentas que automatizam estas interações, eliminando pontos de falha. Para evitar introduzir mais instabilidades, essas ferramentas deveriam ser o mais sólidas e consensuadas possíveis.
Java oferece JPA, Java Persistence API, que, atravês de certas classes e anotações permitem abstrair o programador das tarefas mais repetitivas. Ainda, Netbeans 6.1 permite criar classes automaticamente a partir das tabelas nas bases de dados. Apesar de ser útil para qualquer aplicação, JPA parece entrincherado no J2EE (bem podia estar no J2SE), e só falam nesta especificação em conjunto com EJB (Enterprise Java Beans).
Esta persistência pode ser fornecida por qualquer vendedor. Actualmente estão Toplink Essentials, Hibernate e JDO.
JDO não parece a opção mais habitual, por isso vou deixâ-lo de lado.
Toplink Essential é uma livraria opensource da Oracle. A empresa tomou conta de este produto atravês de certas aquisições. Inicialmente havia um custo nas licenças para uso comercial, mas a determinada altura resolveram oferecer esta versão aberta. É a que Netbeans e GlassFish (e portanto SUN Application Server 9.1) incorporam “de série”.
Hibernate é uma livraria alternativa e opensource. Há muitos livros sobre ela, mas é preciso fazer downloads separados para a usar em Netbeans e GlassFish.
Isto deixa-me num dilema: com quê versão trabalhar? Hibernate tem muita documentação, mas não vem de série, ou Toplink, que tem pouca documentação.
Acho que vou começar com http://java.sun.com/developer/technicalArticles/J2EE/jpa/.
Queria experimentar com cada tecnologia de forma individual, mas está a ser difícil.
Deixo aqui alguns dos links que encontrei. Espero que sejam de utilidade a alguém:
- http://forums.sun.com/thread.jspa?messageID=9445354
- http://www.theserverside.com/discussions/thread.tss?thread_id=27037
- http://www.javalobby.org/java/forums/t90714.html
*UPDATE 2008-08-15*
Já localizei alguma informação “oficial” sobre o TopLink Essentials: http://www.oracle.com/technology/products/ias/toplink/jpa/index.html e https://glassfish.dev.java.net/javaee5/persistence/.
:-)