BT

Spring Roo 1.2 M1: Licença Apache, mais JPA, MongoDB e Camada de Serviços

por Bienvenido David III , traduzido por Wellington Pinheiro em 14 Out 2011 |

Foi liberado o primeiro Milestone do Spring Roo 1.2 (1.2.0-M1), a ferramenta da SpringSource para desenvolvimento rápido de aplicações (RAD). O Spring Roo é um projeto open source, que utiliza os princípios de convenção sobre configuração para criar aplicações Java baseadas no Spring. Além de passar a ser hospedado no GitHub e ter grande aumento de desempenho, o novo Spring Roo traz as melhorias a seguir:

  • Integração com o Spring Data JPA e uso do padrão Repositório/DAO
  • Integração com o MongoDB
  • Possibilidade de criar uma camada de serviços
  • Suporte avançado ao GWT
  • Funcionalidades para engenharia reversa de bancos de dados com múltiplos esquemas
  • Melhorias no ambiente de comandos (shell)

Segundo a equipe do Spring Roo, um benchmark utilizando grandes projetos mostrou uma melhoria de desempenho de dez vezes. Esses dados foram obtidos através de monitoramento e a análise do código em tempo de execução (profiling), verificação do acesso a disco (I/O) e também em função do código gerado automaticamente. A melhoria de desempenho torna-se mais significativa em grandes projetos.

A partir da nova versão, o Spring Roo está licenciado sob a Apache Software License 2 (ASL2), o que o torna mais consistente com a maioria dos projetos do SpringSource. A ASL2 permite o uso do projeto em desenvolvimentos comerciais, integração com sistemas de código fechado e redistribuição proprietária. Até então, o Spring Roo era licenciado sob a GPLv3, enquanto que os JARs de anotações eram distribuídos sob a ASL2 e GPLv3.

O código-fonte do Spring Roo agora está hospedado no GitHub. A razão principal dessa decisão é encorajar um envolvimento maior da comunidade de desenvolvedores. A adoção do GitHub também ajudará a simplicar o caminho para a submissão de novas contribuições.

Além disso, o novo Spring Roo permite que o desenvolvedor escolha a forma a ser usada para a persistência. Tradicionalmente era utilizado o padrão Active Record em entidades de persistência com JPA; gora também é possível utilizar repositórios com JPA, construídos em cima do Spring Data JPA. A forma de persistência é definida atribuindo true ou false ao parâmetro activeRecord, durante a criação da entidade:

entity --class ~.domain.Entity --activeRecord [true|false]

Outra opção disponível para repositórios no Roo é o MongoDB, um banco de dados NoSQL, orientado a documentos, escalável e de alto desempenho. Os seguintes comandos foram adicionados:

  • mongo setup. Configura o projeto para trabalhar com o MongoDB
  • entity mongo. Cria um tipo do domínio que para ser utilizado com o repositório do MongoDB
  • repository mongo. Adiciona a anotação @RooRepositoryMongo ao tipo em questão

O Spring Roo agora também permite o uso de camadas de serviço, através da anotação @RooService. Essa funcionalidade, muito solicitada pela comunidade, esconde o código de acesso e manipulação de dados das classes de controle (controllers). As camadas web, de repositório e de testes gerenciadas pelo Roo já funcionam de forma integrada com a nova funcionalidade. Para a camada de serviços, foi disponibilizado o comando service, que cria uma classe de serviço para acesso a uma determinada entidade do modelo.

O diagrama abaixo, extraído do blog do Spring Roo, mostra a nova camada de serviços e de persistência.

Outra melhoria importante é no suporte ao GWT. Agora, é possível gerenciar o sincronismo das classes RequestFactory (EntityProxy, RequestContext e Locator) com as classes de domínio e da camada de serviços. O scaffolding da camada de apresentação do GWT UI não é mais obrigatório; assim o desenvolvedor pode escolher como o Roo integra o GWT com o projeto. Os seguintes comandos foram introduzidos para a integração com o GWT:

  • web gwt all. Cria as requisições GWT, proxies e o scaffold para todas as entidades
  • web gwt gae update. Configura o projeto GWT para funcionar com o GAE
  • web gwt proxy all. Localiza todas as entidadese no projeto e cria o GWT proxies
  • web gwt proxy request all. Localiza todas as entidade no projeto e cria as requisições GWT e os proxies
  • web gwt proxy request type. Cria o proxy e uma requisição baseada em um tipo específico
  • web gwt proxy type. Cria um GWT proxy baseado num tipo específico
  • web gwt request all. Localiza todas as entidades no projeto e cria uma requisição GWT
  • web gwt request type. Cria um GWT proxy baseado em um tipo específico
  • web gwt scaffold. Cria uma requisição GWT, um proxy e o scaffold para um tipo específico

O suporte para a Engenharia Reversa é uma funcionalidade popular no Roo, que permite a criação dos CRUDs de entidades do modelo a partir das tabelas de um banco de dados relacional, além de automaticamente manter essa camada de entidades sincronizada com as mudanças no banco. A novidade no Spring Roo 1.2 é a habilidade de fazer a engenharia reversa de vários esquemas simultaneamente. O comando para isso tem o seguinte formato:

database reverse engineer --schema "s1 s2 s3" --includeTables "s1.tabela1 s1.tabela2 s3.tabela3

Também foram feitas diversas melhorias no shell do Spring Roo. Entre elas, está a possibilidade de executar comandos do sistema operacional direto do shell do Roo, através do operador "!".

Planejados para o próximo milestone do Roo 1.2, estão a integração com o JSF/PrimeFaces e o suporte aos multimódulos do Maven. Também haverá um novo add-on para JSF 2.0, que permitirá o uso de templates de Facelets ao invés de JSP.

As novas funcionalidades podem ser exploradas fazendo o download direto da SpringSource. Note que a versão 1.1.5 ainda é a recomendada para ser utilizada em projetos em produção. Para mas informações, visite o site oficial ou o fórum do projeto.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.