Javafree

Entrevista com Gavin King, o criador do Hibernate

Publicado por Tutoriais Admin em 16/08/2009 - 14.004 visualizações


Gavin King é o fundador do projeto Hibernate, um framework de mapeamento objeto / relacional para Java. Atualmente, ele trabalha em tempo integral no projeto, financiado pelo JBoss Group. Nesta entrevista exclusiva ao JavaFree , Gavin King fala sobre sua entrada no grupo JBoss e sobre o projeto Hibernate, suas novidades para a versão 3 e a integração do framework com as novas features do Java 5.

Entrevista em inglês

1. Por favor, fale-nos um pouco sobre você e seu emprego ' real '.

Eu moro em Melbourne, Australia, e tenho trabalhado em TI - principalmente Java - já faz aproximadamente cinco anos. Neste último ano, meu emprego ' real ' tem sido o Hibernate. Eu sou um exemplo raro de um desenvolvedor que é pago para escrever software de código aberto. De fato, eu, Christian Bauer, Steve Ebersole e Max Andersen trabalhamos todos agora para o JBoss, desenvolvendo o Hibernate e provendo serviços comerciais. Sou também um membro ativo do comitê da especificação JSR-220 (EJB 3.0).

2. Em sua opinião, por que o Hibernate se tornou tão bem sucedido?

O Hibernate se tornou bem sucedido porque ele resolve um problema muito comum de maneira razoavelmente elegante, porque é uma solução de código aberto e porque é prático. Nós levamos a sério a idéia de que tecnologias OO e relacionais deveriam trabalhar juntas facilmente. E nós permitimos que nosso projeto fosse dirigido por requisitos de usuários. Nós também sabíamos que uma grande tecnologia é inútil se você não consegue explicá-la.

3. Qual foi sua principal motivação, quando criou o Hibernate?

Eu queria resolver um problema interessante, um problema que me afetava pessoalmente. Eu estava frustrado com o trabalho com entity beans no estilo EJB 2 e as frágeis camadas de persistência escritas à mão.

Eu também queria ganhar uma discussão com meu então chefe: -)

4. Que benefícios sua decisão de se juntar ao JBoss Group pode trazer ao projeto Hibernate?

No longo prazo, é simplesmente impossível tocar um projeto com o escopo do Hibernate em seu tempo livre. No tempo em que eu me juntei ao JBoss, eu estava passando tanto tempo respondendo a questões de usuários e consertando pequenos bugs que não havia tempo sequer para dormir, imagine para fazer melhorias no Hibernate. Então, trabalhar para o JBoss fez com que fosse possível que o Hibernate continue a existir e crescer. Isto também nos permitiu realmente sair a campo, falar em conferências e JUGs, trabalhar diretamente com usuários do Hibernate e participar na JCP.

Do ponto de vista dos usuários do Hibernate, eles ganharam não apenas um produto melhor (devido a agora ter desenvolvedores em tempo integral), mas também a oportunidade de adquirir treinamento e comprar suporte em produção 24 / 7. Nem todos se importam com estas coisas, mas muitas pessoas sim, especialmente em grandes organizações.

5. Como você vê outras ferramentas ORM, como o OJB, JDO e Toplink? Você avalia ou gasta algum tempo observando as capacidades destes produtos? Por que as pessoas escolheriam o Hibernate?

Bem, tradicionalmente, não, nós não prestamos tanta atenção - eu era muito mais confortável sendo guiado por pedidos de usuários do que " pelo que os outros caras têm ". Entretanto, mais recentemente, temos feito algumas comparações de função-por-função com as duas principais soluções ORM comerciais, apenas para ter certeza de que não estávamos deixando passar algo despercebido. Isto tem influenciado a lista de capacidades do Hibernate3, onde há alguns ítens que eu descreveria como sendo mais úteis para marketing do que para propósitos práticos.

O núcleo do Hibernate3 (atualmente em alpha) é o mais poderoso motor ORM no mundo - e levará um bom tempo até os outros conseguirem alcançá-lo. Entretanto, temos percebido mais recentemente que há mais do que apenas o motor de execução para se pensar, e ao longo do ano que vem haverá um foco muito maior em polimento e, em alguns casos, a reescrita do nosso conjunto de ferramentas de desenvolvimento. Max está conduzindo este esforço. O Hibernate irá evoluir em um conjunto de produtos que se destinam à resolução como um todo do problema de criar aplicações Java que usam dados relacionais.

6. Como você vê as alternativas aos bancos de dados relacionais, como bancos de dados XML, OO, ou o Prevayler?

Nós não vemos; -)

Na verdade, o modelo de dados relacionais é uma inovação maravilhosa, e seria um disastre absoluto substituí-lo por tecnologias de persistência falhas como XMLDBs e OODBMS. Felizmente, isto simplesmente não irá acontecer, já que simplesmente não existe interesse ou momentum na indústria em torno deles.

Tecnologias como OODBMS sacrificam o gerenciamento de dados sólido e independente da tecnologia de aplicação por conveniência de curto-prazo (conveniência para uma única aplicação, escrita em uma linguagem de programação em particular). A tecnologia relacional essencialmente substituiu completamente a tecnologia de bancos de dados baseados em redes ou hierarquia, e foi por excelentes razões que isto aconteceu. Nós certamente não deveríamos estar revivendo nenhuma destas abordagens desacreditadas usando as últimas buzzwords (OO, XML, etc) como decoração.

7. Existe alguma mudança que você gostaria de ver na API JDBC para fazer o Hibernate melhor e mais rápido?

Seria ótimo ser possível agrupar comandos diferentes de SQL usando o batch update da API JDBC (no momento, só é possível múltiplos conjuntos de parâmetros para o mesmo comando).

Entretanto, ao invés de ver novas features no JDBC, eu ficaria incrivelmente feliz se os fabricantes simplesmente fornecessem implementações completas e confiáveis das features que já estão no JDBC 3. É realmente vergonhoso o quão defeituosos são os drivers JDBC de certos grandes fabricantes de bancos de dados. Eles não parecem se importar.

8. Há algum plano de fazer o Hibernate compatível com a especificação JDO?

Não. O Hibernate irá prover uma implementação do EntityManager do EJB3, definido pela especificação JSR-220. A Sun acabou de anunciar que o escopo da JSR-220 será expandido para cobrir operações fora do container monolítico J2EE tradicional.

Nós não vemos futuro algum para o JDO.

9. Você vê o lançamento do EJB3 reduzindo a necessidade para o Hibernate? Existem benefícios em usar ambos, como em um ambiente BMP?

EJB 3.0 é uma especificação. O Hibernate será uma implementação desta especificação. Então, você pode utilizar os dois ao mesmo tempo; -) Alternativamente, nós achamos que algumas pessoas, que não se importam tanto com padrões, irão continuar usando as APIs específicas do Hibernate, especialmente pela funcionalidade que não é padronizada pela JSR-220.

10. Você poderia nos falar sobre o que há de novo no Hibernate3, e que benefícios estas mudanças irão trazer aos usuários?

A maior novidade é o suporte a " filtros " parametrizados. Esta feature permite que se obtenha um grafo que é apenas um subconjunto dos dados completos no banco de dados. Isto é incrivelmente útil ao lidar com dados temporais, versionados, regionais ou sujeitos a permissões. Na realidade, eu acredito que a maioria dos domínios de negócio tenham casos de uso para esta feature, e que isto logo será considerada uma feature indispensável do Hibernate.

Nós temos feito uma grande quantidade de esforço para adicionar maior flexibilidade ao mapeamento, de modo a suportar modelos relacionais mais complexos (ou mesmo mal-feitos). Isto vem na forma de uma série de pequenas novas features, que se tornam significantes quando tomadas em conjunto. O Hibernate é agora capaz de tratar qualquer coisa maluca que você possa encontrar em um banco legado.

Além disso, agora é possível sobrescrever qualquer comando SQL que o Hibernate gera por seu próprio SQL feito à mão. Isto dá ao seu DBA a liberdade de ajustar à mão o SQL quando necessário.

Algumas das outras mudanças maiores no Hibernate3 foram feitas para nos aproximarmos da JSR-220.

Finalmente, nós meditamos muito sobre que pequenas mudanças poderíamos fazer que fariam o uso do Hibernate mais fácil para iniciantes. Esperamos que com isto haja uma redução na incidência de certas perguntas freqüentes no fórum do Hibernate!

11. E sobre Metadados no Java 5.0? Vocês têm planos de suportá-los? É uma alternativa real ao hbm.xml?

Absolutamente! Emmanuel Bernard está trabalhando na implementação dos metadados de ORM do EJB 3.0 para o Hibernate, e adicionando extensões específicas.

Temos visto quantas pessoas gostam de usar anotações XDoclet para expressar seus mapeamentos Hibernate, portanto estou certo de que ainda mais pessoas irão se sentir confortáveis usando as anotações da JSR-175.

Na verdade, eu espero que esta será a maneira mais comum de se usar ORM no futuro.

12. Como Generics podem mudar o nosso código Hibernate?

Não em muita coisa. O Hibernate já pode persistir coleções tipadas, portanto você pode tornar a tipagem um pouco mais forte no seu domínio de negócio. Coleções tipadas poderiam até mesmo ajudar o Hibernate a descobrir o tipo de associação e reduzir a quantidade de metadados que você tem que escrever. Entretanto, eu não acho que isto é uma feature especialmente significante no contexto de ORM.

13. Quais das novas features do Tiger poderão ser usadas na base de código do Hibernate? Por que?

Bem, nós estamos um pouco presos. Não podemos usar muitas das novas features, porque o Hibernate precisa ficar compatível no nível de código-fonte com JDKs mais antigos. Tudo bem com as coisas sobre anotações, pois podemos fornecer isto como um pacote adicional.

Certamente, anotações é a nova feature mais significante do Java 5, e é bem provável que elas irão mudar completamente a forma como escrevemos código.

14. O que você faz no seu tempo livre?

Eu vou às compras.




Tutoriais relacionados:
Pequeno Tutorial sobre Hibernate
Brincando com os Gatos (Hibernate)
[Tutoriais] - Banco de Dados

Fórum para tirar suas dúvidas sobre Hibernate:
Arquitetura, Frameworks e UML

Hibernate:
http://www.hibernate.org