Categories: Java, JBoss Seam

Gerando código com JBoss Seam

Gerando código com JBoss Seam

Neste artigo vou tentar mostrar um pouco do gerador de aplicações JEE do JBoss Seam, que após algum tempo de estudo e prática pode ajudar bastante os desenvolvedores.
Não é meu intuito aqui explicar o funcionamento do framework em si (escreverei sobre o mesmo mais pra frente), neste artigo abordarei APENAS a ferramenta de geração de código.
A geração de código sempre foi algo muito polêmico entre os desenvolvedores, alguns repudiam por completo essa prática alegando que o código gerado não é muito limpo, etc..
Por outro lado, não há como negar que praticidade em certos momentos é fundamental. Enfim, venho trabalhando com esse framework há aproximadamente 4 meses e já pude mapear alguns momentos em que a utilização do gerador de código pode colaborar ou dificultar o desenvolvimento. Geralmente, nas ditas aplicações comerciais, utilizamos banco de dados que são formados por “tabelas básicas” e “tabelas de movimentação”. Bom, tabelas básicas são aquelas onde geralmente armazenamos dados que serão apenas consultados, como por exemplo “statuspedido”, que armazenará um determinado número de status de pedidos, que serão praticamente imutáveis. Tabelas de movimentação, por sua vez, são aquelas que sofrem muitas atualizações(Create, Update, Delete) e onde geralmente relacionamos um determinado número de tabelas básicas. O ponto onde quero chegar é: o gerador de código do Seam é muito interessante quando estamos falando de tabelas báscias, onde o CRUD gerado é realmente aproveitável. Más então o Seam não gera CRUD para as tabelas de movimentação ? Sim, gera normalmente, porém vai ser muito difícil você realmente aproveitar o que foi gerado, pois existem muitas navegações entre telas o que pode fazer com que o usuário a qualquer distração se perca por completo. Conclusão, muitas modificações serão necessárias para aproveitar a tela gerada, ou seja, chegamos em um ponto onde alterar o que foi feito fica mais trabalhoso do que escrever a tela do zero. Porisso, acredito que só depois de certo tempo de exposição ao framework você terá uma noção mais clara sobre o que aproveitar do código gerado e o que se deve refazer.
Agora que metade das pessoas que começaram a ler o artigo esperando por “mágica” já viram que nem tudo é perfeito, e já fecharam o browser revoltados podemos continuar XD

O que é necessário para gerar o código?

A utilitário “seam-gen”, que faz a geração do código vem dentro do pacote de distribuição do JBoss Seam.
A última versão do Seam pode ser encontrada em http://labs.jboss.com/jbossseam/download/index.html

Após baixar o pacote compactado, extraia o conteúdo do mesmo para um lugar de fácil acesso via linha de comando, apenas para facilitar o procedimento.

Existem dependências?

Sim, você precisará do driver JDBC do banco que você utilizará.

Configurando a geração do código

Acesse via linha de comando(no windows, command ou cmd) a pasta que você extraiu do pacote do JBoss Seam,
Uma vez nesta pasta vamos configurar alguns parâmetros para que o utilitário possa gerar a aplicação.

Digite o comando “seam setup” (sem as aspas). Em seguida, será requisitada a entrada de alguns parâmetros, são eles:
– Java project workspace, que é o caminho absoluto do seu workspace (É onde será armazenado o diretório da aplicação gerada).
– JBoss home directory. Caminho absoluto do seu servidor JBoss. Para evitar problemas utilize a versão 4.2.1 ou superior.
– Project name. Nome do seu projeto.
– RichFaces skin. Skin do RichFaces que será aplicado sobre sua aplicação. Normalmente eu deixo a opção “blueSky” que já vem como default mesmo. Para mais detalhes sobre os skins consulte a documentação do RichFaces. http://labs.jboss.com/jbossrichfaces/docs/index.html
– Project deployed as an EAR or a WAR. Aqui dependendo das suas necessidades de usar EJB ou não você escolhe a forma como a estrutura da aplicação será gerada.
– Java package name for your session beans. Nome do pacote onde ficarão armazenadas as beans de sessão geradas. Para fazer uma analogia seriam as classes controladoras de uma aplicação MVC.
– Java package name for your entity beans. Nome do pacote onde serão armazenadas suas classes de entidade ou modelo.
– Java package name for your test cases. Nome do pacote onde serão armazenadas as classes de teste da aplicação.
– Kind of database. Aqui você deve escolher o tipo de banco de dados que utilizará. Repare as que as opções são dispostas na mesma linha.
– Hibernate dialect for your database. Aqui você terá que passar o nome do dialeto do Hibernate que deseja utilizar. Segue neste link a listagem dos dialetos e o banco respectivo de cada um deles. http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/hibernate/Hibernate_Reference_Guide/Optional_configuration_properties-SQL_Dialects.html
– Filesystem path to the JDBC driver jar. Caminho absoluto da “jar” do respectivo driver JDBC do banco utilizado.
– JDBC driver class for your database. A classe do driver responsável pela conexão JDBC.
– A URL do banco que pretende fazer a geração do código.
– Database username. Nome do usuário do banco de dados.
– Database password. Senha do usuário do banco de dados.
– Database catalog name. Caso seu banco de dados esteja utilizando algum catálogo diferente do padrão, ou você utilize mais de um catálogo, é importante preencher este parâmetro. Caso contrário você pode deixa-lo em branco.
– Are you working with tables that already exist in the database? Aqui é perguntado se você está trabalhando com tabelas que já existem no banco de dados. Deixe esta opção marcado como “y”.
– Do you want to drop and recreate the database tables and data in import.sql each time you deploy? Aqui é perguntado se você deseja que a cada deploy da sua aplicação as suas tabelas sejam apagadas e recriadas. Deixe essa opção marcada como “n”.
– Enter your ICEfaces home directory. Caso deseje utilizar i ICEfaces preencha este parâmetro com o caminho absoluto do diretório raiz do ICEfaces. Eu como não utilizo, sempre deixo esta opção em branco.

Bom, neste momento a configuração da geração está pronta, porém o código ainda não foi gerado.
Para você entender melhor o que o “seam setup” fez, entre no sub-diretório “seam-gen” e visualize o conteúdo do arquivo “build.properties”. Você verá que lá estão todas as informações que você passou durante a configuração.

No meu caso o arquivo ficou da seguinte maneira:

#Generated by seam setup
#Sat Jan 19 20:33:28 BRST 2008
hibernate.connection.password=XXXXX
workspace.home=c\:/workspace
model.package=artigo.entity.beans
driver.jar=C\:\\jboss-4.2.2.GA\\server\\default\\lib\\mysql-connector-java-5.1.5-bin.jar
action.package=artigo.session.beans
test.package=artigo.test.cases
database.type=mysql
richfaces.skin=blueSky
hibernate.default_catalog.null=
hibernate.default_schema.null=
database.drop=n
project.name=artigo
hibernate.connection.username=paulovittor23
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
project.type=war
icefaces.home=
database.exists=y
jboss.home=C\:/jboss-4.2.2.GA
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.connection.url=jdbc\:mysql\://localhost\:3306/artigo

Gerando o código

Agora que já passamos todas as informações que o gerador precisará, podemos enfim partir para geração de código.
Primeiramente, vamos criar apenas a estrutura da aplicação. Para isto, novamente no diretório raiz do JBoss Seam, digite “seam create-project”.
Espere o final da operação e você deverá receber uma mensagem como esta:

BUILD SUCCESSFUL
Total time: 20 seconds

Após isso, partiremos para a geração das classes e telas. Digite “seam generate-entities”.
Novamente você deverá receber uma mensagem de sucesso, como esta:

BUILD SUCCESSFUL
Total time: 9 seconds

Fazendo o primeiro deploy

Para ver a aplicação em funcionamento pela primeira vez, digite “seam restart”. O gerador do Seam fará o deploy no JBoss indicado na configuração. Suba o servidor e veja o que ele gerou.
Pra quem nunca usou o RichFaces vai ver que a aparência das telas é muito boa XD

A aplicação já pode ser aberta para edição pela sua IDE de preferência. Antes de fazer qualquer alteração, procure entender ao menos o básico sobre o funcionamento do framework através da documentação. Observar o código gerado pode ajudar bastante quem está querendo começar a trabalhar com o JBoss Seam.

Qualquer dúvida, na medida do possível, estarei procurando ajudar.

Article info