segunda-feira, 31 de março de 2008

Configurando grails para usar classes de domínio em Java

No post anterior eu fiz um resumo das tags JPA que são usadas (que eu uso) para fazer os mepeamentos objeto-relacional.

Neste post eu quero documentar aqui como configurar e grails para usar as classes Java anotadas.

Vamos lá:
1) Criar as classes java no diretório [grails-app-root-dir]/src/Java de sua aplicação em grails.
Geralmente eu crio para minhas aplicações o seguinte package "br.com.[nomeSistema].model".


2) Fazer o mapeamento objeto-relacional com as tags JPA, conforme documentado no post anterior.

Arquivo Pessoa.java
package br.com.applicacaoTeste.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

/**
* Classe que representa uma pessoa
*/
@Entity
@Table(name="PESSOA")
public class Pessoa {

/**
* Identificador da propriedade
*/
@Id
@GeneratedValue
@Column(name="PESSOA_ID", nullable=false)
private Long id;

/**
* Nome da propriedade
*/
@Column(name="NOME", length=50, nullable=false, unique=true)
private String nome;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}
}



3) Para cada classe Java criada, criar um arquivo groovy para conter as "constraints" do groovy.

Exemplo:
Arquivo PessoaConstraints.groovy
package br.com.aplicacaoTeste.model

constraints = {
nome(size:1..50,nullable:false)
}

No código em groovy acima, estamos dizendo para o grails que o nome tem que ter pelo menos 1 caracter e não pode ser nulo. Estas constraints podem ser melhor entendidas de acordo com a documentação do grails [veja aqui]

4) Criar o arquivo [grails-app-root-dir]\grails-app\conf\hibernate\hibernate.cfg.xml da seguinte forma:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<mapping class="br.com.aplicacaoTeste.model.Pessoa" />
</session-factory>
</hibernate-configuration>

5) O quinto é ultimo passo é adicionar no arquivo [grails-app-root-dir]/conf/DataSource.groovy uma linha, conforme mostrado abaixo:


dataSource {
pooled = false
driverClassName = "org.hsqldb.jdbcDriver"
username = "sa"
password = ""

//... configuração necessária para reconhecimento das TAGS JPA pelo grails
configClass = org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration }

... [Restante do conteúdo do arquivo foi omitido]

Agora as telas do cadastro de pessoa podem ser criadas com o comando do GRAILS

grails generate-all br.com.aplicacaoTeste.model.Pessoa

Nenhum comentário: