Gilead é uma biblioteca que permite:
Enviar entidades de persistência para fora da JVM sem dor.
Gilead, que significa Generic Light Entity Adapter, foi anteriormente chamada de Hibernate4GWT. A mudança de nome veio após os desenvolvedores começarem a suportar outros frameworks:
Desde que o Gilead passou a tratar mais do que o front-end GWT e suportar outras implementações do JPA além do planejado pelo Hibernate, nós buscamos um nome mais genérico.
A primeira razão para a criação do Gilead foi para facilitar o martírio que estamos fadados quando tentamos enviar entidades para outros sistemas ou tecnologias front-end. Geralmente, o problema ocorre porque os frameworks de persistência alterarão as classes durante a compilação ou runtime, para incluir informações que eles necessitam, aliviando o trabalho de persistir entidades. Assim, quando estes objetos modificados são transmitidos, coisas estranhas podem acontecer e erros como "NoClassDefFoundError" e "ClassCastException" são lançadas pelos receptores.
Gilead resolve isto através das estratégias de cloning e merging. Quando objetos estão sendo lançados para fora do servidor onde foram clonados:
A clonagem pega uma entidade persistente e cria uma instância neutra, sem proxies ou coleções de persistência.
Quando os objetos estão sendo retornados ao servidor é feito o merge. O Gilead realiza esta ação em um dos três "modos":
- stateless: As classes devem extender LightEntity ou implementar ILightEntity, que permitem que a informação de persistência seja armazenada em um objeto clonado (nenhuma informação é deixada no servidor).
- stateful: A informação de persistência é armazenada na sessão HTTP.
- dynamic proxy: Um modo experimental stateless, útil em situações em que o c´ódigo existente não pode ser modificado para preencher o conjunto de requisitos existentes para o modo stateless;
O Gilead está a atualmente na versão 1.2.2 e provê operações estáveis de clonagem/merge para aplicações que utilizam Hibernate como framework JPA. Os adaptadores estáveis providos pelo Gilead para envio de entidades a uma tecnologia front-end incluem GWT e Flex (utilizando BlazeDS).
A próxima versão, 1.3, espera criar: um adaptador XML/Web Services, suporte para OpenJPA (com o EclipseLink mais ao final) e outras melhorias.