DESENVOLVIMENTO EM GRAILS COM ABORDAGEM MAPEAMENTO OBJETO RELACIONAL



Documentos relacionados
Disciplina de Banco de Dados Parte V

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Noções de. Microsoft SQL Server. Microsoft SQL Server

1. Domínio dos Atributos

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Aula 02 Modelagem de Dados. Banco de Dados. Aula 02 Modelagem de Dados. Superior /2011 Redes Computadores - Disciplina: Banco de Dados -

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Introdução ao SQL. Aécio Costa

Prof.: Clayton Maciel Costa

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária

Comandos de Manipulação

Orientação a Objetos

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Persistência e Banco de Dados em Jogos Digitais

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Manipulação de Banco de Dados com Java 1. Objetivos

HIBERNATE EM APLICAÇÃO JAVA WEB

Manual do usuário. v1.0

Projeto de Banco de Dados: Empresa X

LINGUAGEM DE BANCO DE DADOS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

4 O Workflow e a Máquina de Regras

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Principais Comandos SQL Usados no MySql

Oficina. Praça das Três Caixas d Água Porto Velho - RO

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Modelagem de Dados UNIDADE DE REVISÃO E RECUPERAÇÃO

BANCO DE DADOS. Fixação dos conteúdos Integridade Referencial Normalização Exercícios

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Aula 1 Acesso a Banco de Dados

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Especificação do 3º Trabalho

Linguagem SQL Sub-linguagem DDL

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Procedimentos para Reinstalação do Sisloc

Manual do Visualizador NF e KEY BEST

FERRAMENTA WEB PARA MODELAGEM LÓGICA EM PROJETOS DE BANCOS DE DADOS RELACIONAIS

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Guia de Atualização TOTVS Segurança e Acesso 12.1

Comandos DDL. id_modulo = id_m odulo

Engenharia de Requisitos Estudo de Caso

Programação SQL. Introdução

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

UFG - Instituto de Informática

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Segurança de Dados no PostgreSQL

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Integração de sistemas utilizando Web Services do tipo REST

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Processo de Controle das Reposições da loja

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

MODELAGEM DE DADOS. Unidade II Arquiteturas do SGBD

Banco de Dados. Maurício Edgar Stivanello

1 R$ 50,00 R$ 50,00 reusable object-oriented software 2 Utilizando UML e padrões: uma

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

INTRODUÇÃO. Enfoque abstrato. Enfoque Intermediário

Disciplina: Unidade V: Prof.: Período:

Conceitos básicos. Aplicações de banco de dados. Conceitos básicos (cont.) Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada.

Banco de Dados. Arquitetura e Terminologia. Prof. Walteno Martins Parreira Jr waltenomartins@yahoo.

Prof. Marcelo Machado Cunha

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Manual de Administração

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Persistência de Classes em Tabelas de Banco de Dados

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Sumário. Uma visão mais clara da UML

Guia de administração para a integração do Portrait Dialogue 6.0. Versão 7.0A

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Modelagem de Banco de Dados através do ERwin

JDBC Java Database Connectivity

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Manual Administrador - Mídia System

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

Docas do Pará - Guia de Instalação

Orientação a Objetos

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Cenários do CEL. Acessar ao sistema

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Aplicativo da Manifestação do Destinatário. Manual

Treinamento sobre SQL

Transcrição:

DESENVOLVIMENTO EM GRAILS COM ABORDAGEM MAPEAMENTO OBJETO RELACIONAL Emerson Brito do Nascimento RESUMO: Este trabalho apresenta a desenvolvimento de uma aplicação real de um instituição de ensino superior pública, usando ferramenta Grails de desenvolvimento ágil para web, uso do conceito de modelo Orientado a Objeto e modelo de dados Entidade Relacional, aplicando a abordagem de mapeamento objeto relacional MOR, apresentar como é feito o mapeamento entre os objetos e entidades. Palavras-chaves: Grails, mapeamento objeto relacional, modelagem de dados. 1 - Introdução Objetivo do estudo é elaborar uma aplicação usando uma ferramenta de desenvolvimento ágil. O Grails será a ferramenta utilizada para desenvolvimento ágil, esta ferramenta atua sobre a linguagem Groovy. A linguagem Groovy é desenvolvida sobre Java, ela facilita o desenvolvimento de aplicações, simplificando comandos e estruturas que em Java normalmente são complexas. Grails é a próxima geração de Java framework de desenvolvimento web que gera grandes ganhos de produtividade através da confluência de uma linguagem dinâmica (Grails in Action, 2009,PG 3) No estudo aplica-se o paradigma Orientado a Objeto, e modelagem de dados, Entidade Relacional. Dessa forma é feito abordagem MOR ou ORM, Mapeamento Objeto Relacional, (do inglês Object Relational Maping), A qual é o principal objetivo do estudo, mostra como é feito esse mapeamento. Essa abordagem consistem em mapear os objetos de um modelo OO com as entidades do modelo ER. A utilização da ferramenta Grails permite gera um método

2 de construção GORM (Grails In Action,G. SMITH,PETER LEDBROOK,Manning,2009), baseado em uma aplicação real, foi modelada as classes do modelo OO(Orientado a Objeto) e suas respectivas entidades do modelo relacional do schema(esquema) lógico do banco de dados. O estudo também aborda a forma que a linguagem SQL (do inglês Structured Query Language), é aplicada na construção e utilização do banco de dados MySQL(gerenciador de banco de dados). As ferramentas utilizada para o desenvolvimento foi NetBeans 6.9.1 (IDE- integrated Development Environment ou Ambiente Integrado de Desenvolvimento), pluing Grails para Netbeans, workbeanch MySQL (ferramenta de modelagem de Schema), MySQL(gerenciado de banco de dados ou SGBD) e Astah (ferramenta de modelagem UML). 2 - Apresentação do domino da aplicação GINFO O domínio que será usado para estudo é uma instituição de ensino superior pública onde a carreira de professor é estruturada em classes e nível, e os integrantes de carreira docente, terão promoção de classe e ascensão de nível. O pedido de promoção de classe deverá ser formalizado, na Pró-Reitoria de Recurso Humanos Comunitário (PRRHC), mediante requerimento devidamente protocolizado, junto com Memorial Descritivo, documentação necessária conferida com os originais. A aplicação tem que gerenciar as informações do currículo do professor, detalhar todas as atividades exercidas, como assim seus períodos, quantidade. As classes e níveis são dividas conforme segue: a) Professor Auxiliar (níveis A, B, C e D); b) Professor Assistente (níveis A, B, C e D); c) Professor Adjunto (níveis A, B, C e D); d) Professor Associado (níveis A, B e C). O professor ascenderá ao nível consecutivo de sua classe após interstício de dois anos mediante avaliação de desempenho. O Professor Auxiliar ascenderá ao nível consecutivo de sua classe mediante a comprovação do grau de Especialista, independentemente do interstício, interferindo na sua data base. Toda ascensão reinicia um novo interstício. O Professor Assistente e o Professor Adjunto terão direito à avaliação de desempenho para ascensão de nível quando comprovarem possuir, respectivamente, os graus de Mestre e

3 de Doutor. O professor será comunicado a respeito do vencimento do interstício pela PRH, com antecedência de 60 dias. O professor pode requerer a ascensão de nível, em protocolizado a partir de 45 dias antes do término do período de vencimento do interstício. A avaliação do memorial descritivo deverá ser feita com base na tabela de pontuação. A avaliação acontece mediante defesa em sessão pública do Memorial Descritivo, será realizada por uma comissão designada pelo departamento. A comissão será composta por três membros e um suplente, todos docentes da mesma classe ou superior à do candidato. A sessão de defesa deverá ser marcada em um prazo máximo de trinta dias, a contar da data da constituição da comissão. O roteiro para a elaboração do Memorial Descritivo contém os dados do Professor e sua situação atual(nome, matrícula, regime de trabalho, classe/nível, unidade e período) e as atividades agrupam-se em 6: atividades de ensino, produção acadêmica, capacitação do professor, orientação, atividades administrativas e outras atividades. As tabelas a seguir completam a infraestrutura de mecanismos para proceder a avaliação do memorial. Figura 1 - Memorial descritivo Fonte: R E S O L U Ç Ã O No 061/2003-CEP /UEM

4 Figura 2- Grupo de atividades Produção Acadêmica Fonte: R E S O L U Ç Ã O No 061/2003-CEP /UEM No ANEXO os grupos de atividades necessárias para o desenvolvimento da aplicação. 3 - Modelo Orientado a Objetos A orientação a objetos é uma abordagem para desenvolvimento de software que organiza os problemas e suas soluções como um conjunto de objetos distintos (Pflleger,Shari,Eng. de software.:teoria. e prática., 2. ed.sp, 2005, pg. 210). A abordagem OO é usada para identifica e analisado os objetos no mundo da aplicação(domínio do problema). Na aplicação a se desenvolvida existem entidades. O professor é entidade do domínio, um professor tem que se relacionar com outras entidades, atividade,nível,classe são outras entidades do domínio desse mundo, a partir disso começar a desenvolver a estrutura inicial do mundo onde esses objetos trocaram mensagem. Um relacionamento entre objetos e dada pelo troca de mensagens (Sommerville Eng.Software, 8.edi Pearson Addison Wesley,2007, pg. 120). Um professor contém um nível e uma classe (essa classe é referente a classificação do professor no domínio, não é classe do paradigma orientado a objeto, como é exposto adiante).para representar esse contexto aplicado no OO, usa-se o diagrama UML, que representa todas as classes (conjunto de objetos em comum) e seus relacionamentos no domínio é dado nome de diagrama de classes para essa representação.

5 Figura 3- Professor relaciona com Classe A representação do relacionamento tem que mostra a cardinalidade entre as entidades, tanto o objeto Classe como Nível, tem se o relacionamento 1:1(um para um) com Professor, Figura 3, Figura 4. Figura 4-Cardinalidade relacionamentos As cardinalidades podem ser 1:1(um para um), 1:N(um para muitos) ou M:N(muitos para muitos). No domínio um professor ou mais professores solicitar promoção de nível para Pró-Retoria Recursos Humanos Assuntos Comunitários. Então neste caso encontra-se a cardinalidade de N:1(muitos para 1 ou 1 para muitos), a ordem de chama um ou muitos depende da forma que se deseja representar a troca de mensagem, Na Figura 5 representa essa situação citada.

6 Figura 5 -Cardinalidade N:1 No mundo OO tem um conceito chamado herança onde um objeto filho herda algumas características do objeto pai. O objeto Atividades tem algumas características que são compartilhadas com todos os grupos de atividades, mas cada grupo de atividades tem suas características únicas. Na Figura 6 a classe Atividades é pai das outras classes. Figura 6 -Herança atividades Na Figura 7 é representada a forma mais abstrata de um diagrama de classe, da aplicação GINFO. Nesse modelo apresenta simplificado as principais classes e seus relacionamentos do domínio da aplicação GINFO, com esse diagrama já é possível começar a estrutura um modelo de dados, que ira representar a estrutura lógica do banco de dados (schema lógico).

7 Figura 7 - Diagrama de classe GINFO 4 - Modelo Entidade Relacionamento Como lembra Ramakrishnan e Gehrke(Sistemas de Gerenciamento de Banco de Dados,2008, 3.ed.)O principal característica para representar os dados do modelo relacional é a relação. No domínio existem entidades que precisam se relacionar com as outras entidades, as entidades são a representação das tabelas no schema físico e cada entidade tem conjuntos de atributos que são a representação dos campos das tabelas. Assim como no modelo OO, existem as cardinalidades entre as relações das entidades no modelo ER, ela pode ser igual ao modelo Orientado a Objeto, 1:1, 1:N ou M:N. 4.1 - Chave única e relacionamento Cada entidade precisa se única, não existem duas pessoas com a mesa impressão

8 digital ou cpf,como no mundo real as entidades não podem existir a mesma no mesmo espaço ele precisa se única,cada instancia de um entidade(objeto),representa um registro em uma tabela, que precisa ser identificado como único. No modelo ER para identificar uma entidade como única, é selecionado um atributo que mostra essa característica de unicidade, esse atributo é aplicado como chave primaria. A chave primeira é a informação que identifica o atributo como único no schema lógico. Na entidade Professor no GINFO foi adotada como chave primaria a matricula, considerar que cada professor tem seu único código de matricula. Então um professor tem uma classe, para entidade classe considerar com chave primaria idclasse. Para obter o relacionamento no modelo ER entre professor e classe, usa-se as chaves primaria das duas entidades, matricula e idclass, o relacionamento entre essas duas entidades como pode ver na Figura 8, cria-se um atributo chamado classe_idclasse dentro professor, do mesmo tipo da chave primaria da entidade classe ao inserir um registro na tabela professor tem que se adicionar uma valor em classe_idclasse que a ponta para um registro da classe, que indicar qual classe o professor pertence. O atributo classe_idclasse é caracterizado como uma chave estrangeira na entidade professor, pois ela é uma chave primaria da entidade classe. Figura 8 - professor Relaciona classe O relacionamento 1:N(um para muitos), é aplicado em professor para atividades Figura 9, representa que um professor pode ter muitas atividades, o relacionamento é feito com atributo professor_matricula, onde para cada professor pode cria-se vários atividades.

9 Figura 9 - relacionamento um para muitos Autor:Emerson Brito do Nascimento A entidade atividades ela é esta relacionada com o grupo de atividade assim tem um relacionamento 1:N(um para muitos) Figura 10. Figura 10- Entidade Relacional No caso estudado entidade atividades tem uma relação com professor e também com os grupos de atividades, gerando assim um relação ternária onde cada entidade do grupo de atividades(produção acadêmica, ensino, administrativas, capacitação docente, orientação e outras) é um atividade filha. Logo uma entidade professor tem uma relação com os grupos de atividade. Ao associa um busca da chave estrangeira de professor na entidade atividade poder associa um chave estrangeira de algum grupo de atividades (professor->atividade<-grupos de atividades). A entidade atividade no modelo ER ela representa uma relação com atributos. O modelo ER do GINFO mostra como são a estrutura básica do schema lógico, para um banco

10 de dados. A partir desse schema lógico, pode-se gerar o schema físico usado pelo SGBD. 5 - Grails ferramenta ágil desenvolvimento O Grails é uma ferramenta muito poderosa, pois nela esta compilado alguns framework mais usados para desenvolvimento de aplicações web, e como ela trabalha sobre a linguagem Groovy que é uma forma facilitada da linguagem Java, contém os mesmos recursos, mas com uma implementação simplificada, faz com que o processo de desenvolvimento ganhei produtividade e agilidade, frameworks contido no Grails: a) Model-view-controller (MVC) é uma arquitetura que busca separa o a lógica de negócios da visão da aplicação. b) Hibernate- mapeamento e persistência de objetos. c) Ajax- sincronismo javascript e xml, interação entre componentes. d) Spring- injeta dependências (IoC). O Grails tem seu foco em manter uma alta qualidade do software, nele pode desenvolve e aplicar os testes unitários e de integração, esses testes são importantes para manter um software de qualidade. 5.1 - Criando a estrutura da aplicação Criar um projeto no Grails usa o comando no terminal grails create-app <nome_do_projeto> com esse comando o Grails criar todas estruturas necessárias para uma aplicação funciona, a estrutura do grails já vem com diretório separados como MVC(model view controller ou modelo visão controle). No ambiente Netbeans, esse comando é omitido, no lugar cria-se um novo projeto Groovy. O netbeans solicitar ao framework Grails para executar o comando create-app, assim gerar toda a estrutura para inicializar aplicação.

11 Figura 11 - Novo Projeto Netbeans Autor:Emerson Brito do Nascimento O nome do projeto é o diretório raiz, onde é desenvolvido o GINFO. Figura 12 - Nome do projeto A estrutura de a aplicação GINFO ver Figura 14. Apresenta todos os pacotes criados pelo Grails para começa a implementação do projeto.

12 Figura 14 Diretórios do Projeto O Grails estrutura os pacotes(pastas) de forma que organiza a aplicação seguindo o conceito de MVC. Controladores, Classes do domínio e Visualizações, são as principais pastas que é utilizar na aplicação: a) Controladores- é onde contém os Controles(MVC) da aplicação ele que fazer a transição de Visão para o Modelo. b) Classe do domínio- é onde contém os Modelos(MVC) da aplicação é onde fica as classes do projeto para usar na persistência de dados e as regras do negócio. c)visualizações e laytouts- é onde contém as Visões(MVC), todas representações dos Modelos ficam localizado neste pacote. 5.2 - Grails e Datasource No Grails é possível trabalha com vários tipo de SGBD(sistema gerenciado de banco de dados), graça a o hibernate que esta acoplado ao Grails. Dentro do pacote Configurações esta as configurações necessária para aplicar no GINFO,algumas configurações como inicializar o servidor, qual webservice deve se utilizado,qual banco de dados deve se usado

13 entre outras. Na pasta configurações o arquivo DataSource.groovy esta os dados para fazer as conexões com SGBD. Os atributos driverclassname, username e password, indica qual driver do SGBD deve se usado e com qual usuário e senha ele utiliza nas conexões do banco. O plugin do driverclassname tem que esta disponível no diretório bin da aplicação que para fazer corretamente a conexão com banco de dados. Figura 15 datasource driver No Ginfo o SGBD usado é MySQL, na linha 4 da Figura 15, o driverclassname receber o driver com.mysql.jdbc.driver, esse driver tem todos comando necessário para criar a conexão com MySQL. O username receber 'root', esse é usuário de acesso ao banco de dados que é gerado no Ginfo, o password esta em branco, pois não foi definido nenhuma senha para o usuário root. A configuração de qual schema é usado na aplicação também é definida nesse arquivo, o Grails já vem disponível três ambientes da aplicação, development,test e production(desenvolvimento,teste e produção). A variável dbcreate definir o que o Grails terá que fazer quando conectar com datasource, as opções são create, create-drop e update: a)create- criar um todas tabelas do banco de dados baseado na classe do domínio. b)create-drop- derruba(deleta) o banco e recriar novamente. c)update- atualizar o banco quando necessário. A variável url, ela define qual datasource(schema) tem que se usado, na aplicação do Ginfo, nos três ambientes é usado um único schema GINFO, mas o ideal é cada ambiente ter um datasource diferente. Com essas configurações já é possível utilizar o banco de dados para criar, inserir, atualizar, deleta ou consultar ver Figura 16.

14 Figura 16 Ambientes da aplicação 5.3 - Modelando o domínio do GINFO O diretório Classes do domínio contém todas as classes gerado no modelo OO, é nesse local que é criado e implemento as classes da aplicação. Modelando a classe Professor ver Figura 17. Adicionar todos os atributos e métodos da classe conforme foi efetuado no modelo OO, no Grails(Groovy) não necessitar colocar ponto e vírgula no final de uma linha. Dentro do bloco static constraints, é adicionado restrições dos campos (atributos), por exemplo, campos não pode ser em branco, o valor tem que se único, limita tamanho ou caracteres aceitos.

15 Figura 17 Classe Professor 5.3.1 Relacionamentos GORM O relacionamento de Professor e Nivel é 1:1(um para um) então o atributo nivel(ver Figura 17)em Professor contem o identificado do Nível para criar o relacionamento. Na classe Nível é aplicado o ligação ao Professor, belongsto, é comando que informar o GORM que existe uma relação entre Professor e Nivel de 1:1(um para um) ver Figura 18. Figura 18 Classe Nivel relacionamento Professor Entre classe Atividade e Professor existe um relacionamento de 1:N então aplicar o comando belongsto em Atividade criar um ponteiro(ligação) para o Professor e na classe

16 Professor usa hasmany que informar GORM um professor tem muitas atividades ver Figura 19. Figura 19 - Relacionamento 1:M Autor: Emerosn Brito do Nascimento 5.3.2 - Mapeamento objetos e tabelas GORM Se no Grails as configurações do DataSource estive definido a variável dbcreate com create, a o iniciar o GINFO, ele criar as tabelas e os campos, restrições e seus relacionamentos de acordo como foi implementadas nas Classe de domínio da aplicação é já criar se o GORM,faz-se o relacionamento objetos e entidades no banco de dados. Mas no caso do GINFO se a tabela já existe no banco de dados é necessário fazer o mapeamento dessa tabela para a aplicação funciona. Dentro do bloco static mapping, declara-se qual tabela a classe pertence, os atributos se relaciona com quais campos dessa tabela,no caso de Professor é mapeado para tabela professor conforme na Figura 20. Figura 20 - Mapeamento Tabela x Classe

17 Considerando que nesse caso a tabela e os campos têm o mesmo nome não existi a necessidade de se fazer esse processo de mapeamento, o próprio Grails criaria o mapeamento objeto tabela, isso no GORM, ganhado grande produtividade para aplicações novas. Se existir no schema lógico uma tabela com o mesmo nome da classe de domínio o próprio Grails realiza a abordagem ORM, não necessitando que o desenvolvedor criar o mapeamento. 5.4 - SQL e Grails O SQL no Grails é omitido no desenvolvimento inicial da aplicação, ao declara as classes do domínio o GORM, criar o mapeamento, então a o manipular classes o Grails faz a manipulação adequada na tabela do banco de dados, sem a necessidade de intervenção direta do programado. Por exemplo, na Figura 21 representa a classe Professor ao gerar essa classe o Grails passa a seguinte instrução SQL: CREATE TABLE IF NOT EXISTS `GINFO`.`professor` ( `matricula` INT NOT NULL, `classe_idclasse` INT NOT NULL, `nivel_idnivel` INT NOT NULL, `nome` VARCHAR(250) NULL, `regime_de_trabalho` VARCHAR(45) NULL, `unidade` VARCHAR(250) NULL, `periodo` DATE NULL, `memorial_idmemorial` INT NOT NULL, PRIMARY KEY (`matricula`, `classe_idclasse`, `nivel_idnivel`, `memorial_idmemorial`), INDEX `fk_professo_classe` (`classe_idclasse` ASC), INDEX `fk_professo_nivel1` (`nivel_idnivel` ASC), INDEX `fk_professor_memorial1` (`memorial_idmemorial` ASC), CONSTRAINT `fk_professo_classe` FOREIGN KEY (`classe_idclasse` ) REFERENCES `GINFO`.`classe` (`idclasse` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_professo_nivel1` FOREIGN KEY (`nivel_idnivel` ) REFERENCES `GINFO`.`nivel` (`idnivel` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_professor_memorial1` FOREIGN KEY (`memorial_idmemorial` ) REFERENCES `GINFO`.`memorial` (`idmemorial` ) ON DELETE NO ACTION ON UPDATE NO ACTION)

18 ENGINE = InnoDB; Essas instruções SQL, fazer a verificação se existe a tabela no schema lógico, se não existir ele criar a tabela, criar os campos, define o tipo dos campos e suas restrições, aplica a chave primaria. Todo esse script é omitido no Grails para ganha produtividade e agilidade. Figura 21 Classe Professor 5.4.1 Inserir, Consultar, Atualizar e Deleta SQL x Grails O Grails já tem um sistema de geração automatiza de código, ele criar as classes necessárias padrão para fazer todo o processo MVC, o comando para efetua isso é generateall, na Figura 22, esta aberto o shell do netbeans para efetua comandos do Grails, no parâmetro é adicionado qual classe do domínio deseja gera, na Figura 22 é passado como parâmetro ginfo.professor, o local e o nome da classe que se deseja gera, no caso do Ginfo a classe Professor,Então o Grails gera as Visões e o Controler de Professor.

19 Figura 22 Generate-All Professor Depois desse processo pode-se utilizar o CRUD(Create, Retrieve, Update e Delete) da classe Professor, na Figura 23, contém as Visões que foram geradas para classe Professor, essas visões são associada no controle, cada visão é referente a uma operação do CRUD: a) C - visão create, visão usada para inserir novos registros. b) R - visão list, mostra um lista de todos os registros. c) U - visão edit, fazer a atualização de um registro. d) D- visão show, nele mostra um certo registro também contém um Retrive que seleciona um registro, nela também pode chamar a visão edit. Figura 23 Visões Padrões Grails O Grails criar todas as instruções necessárias para fazer esses processos no SQL, exemplo das instruções SQL para fazer CRUD: 1- Operação Create, no SQL utiliza a instrução INSERT, como ver Figura 24, usa a instrução INTO que passa a tabela que quer inserir o registro e os campos correspondentes aos valores. Existe a instrução CREATE no SQL, mas é usado para criar tabela, como foi mostrado no tópico 5.4.

20 Figura 24 Insert SQL classe Na Figura 25 mostra com é a visão padrão do GINFO para inserir um registro em na classe.na barra de endereço http://localhost:8080/ginfo/classe/create, é mostrado qual visão esta que sendo chamada da aplicação, no caso do Ginfo/classe/create. Figura 25 Visão Create 2-Operação Retrieve, no SQL utiliza a instrução SELECT para retorna alguma registro como na Figura 26 seleciona todos os campos da tabela classe.

21 Figura 26 Select classe Na figura 27, apresenta a visão list do GINFO listando todos os registro no banco de dados. Figura 26 List classe 3-Operação Update, No SQL a instrução contém o mesmo nome UPDATE, nesse caso a instrução SET indica qual(is) campo(s) e qual é valor para atualizar, a instrução WHERE é utilizada para restrição, na Figura 27 mostra que a atualização para tabela classe no campo descrição receber valor Professor Associado, somente se o campo id for igual a 2. Figura 27 Update classe A visão para Atualização e exclusão do GINFO é a mesma, ao clica no campo Id da visão list, Ver Figura 26 é enviado para visão edit, onde contém as opções de update e delete, conforme

22 está na Figura 28. Figura 28 Visão para Update e Delete Autor: Emerosn Brito do Nascimento 4- Operação Delete, a instrução no SQL para exclusão de um registro é DELETE, pode usa a instrução WHERE, como foi feito no caso do UPDATE, restringindo qual(is) registro(s) podem se excluídos da tabela. Na Figura 29 apresenta a instrução para excluir o registro com id igual a 3 da tabela classe. Figura 29 Instrução Delete No caso do GINFO a operação delete esta na mesma visão de update conforme na Figura 28. Ao clica no id da visão list a aplicação envia para visão de edição onde pode efetua o delete do registro. 5.4.2 Operações com álgebra relacional no SQL No desenvolvimento do Ginfo é preciso buscar muitos registros diferenciados, para efetuar as regras de negócios, esses registros as vezes são obtidas com cruzamento de várias tabelas, relacionadas, no SQL existem operadores muitos usado para relacional e restringir as consultas ao banco de dados. O operador de seleção SELECT, operador de projeção

23 WHERE,o operador de união AND, operador cartesiano OR, equijunção INNER JOIN.Esse operadores citados são de expressão, também tem os operadores de comparação: a) < - menor b) <= - menor igual c) = - igual d) <> - diferente e) > - maior f) >= maior igual Esses operadores permitem fazer vários tipos de consultas no banco de dados usando o conceito de álgebra relacional. Um caso no Ginfo, precisamos saber qual a classe e nivel de professores que estão registrado no DIN. Na Figura 30 fazer equijunção entre as tabelas professor, classe é nivel, através do operador INNER JOIN, a equijunção é feita nas tabelas verificando se o campo classe_id na tabela professor é igual a id na tabela classe, assim também é feito com a tabela nivel. A seleção dos campos, nome, unidade, classe_id, classe.descricao, nivel_id, nivel.descricao é feita com operador SELECT apresentando somente os campos que estão selecionados, com WHERE é feito uma restrição na projeção, limitado as tuplas (linhas) a se recuperadas na apresentação. Figura 30 Operações no SQL Outra situação pode ocorrerá no GINFO é sabe quais professores estão com a carga horária de ensino menor que um certo limite. Na Figura 31, é feito a projeção que o professor com carga_hora_total de ensino é menor que 10.

24 Figura 31 Professores carga horária de ensino menor dez 6 Considerações No desenvolvimento do GINFO ainda não foi aplicado todos os conceitos possíveis da álgebra relacional, mas partir das implementações de regras de negócio mais complexa poderá se criado operações no SQL mais complexas. Outra coisa que não foi abordado no GINFO é as View(visões) do banco de dados, elas são tabelas virtuais que são criadas a partir das de álgebra relacional, assim quando foi necessário recuperados certa informações já esta modelado as operações em SQL. Um banco de dados é um componente essencial no desenvolvimento de uma aplicação, normalmente na fase de projeto de software, é criado a modelagem do banco de dados. No desenvolvimento do GINFO a fase de modelagem de negócio e modelagem do banco foi feitas juntas. Isso não é aplicado na engenharia de software porque para modela um ER é necessário já tem um modelo de negócio bem definido. 7 Conclusões A construção de projeto de software de qualidade exige a modelagem do domínio, com isso aplica-se atualmente o paradigma orientando a objeto. Mas a os SGBD em sua grande maioria é usado o modelo entidade relacional, com isso o software necessita fazer o mapeamento dos objetos relacional. A ferramenta Grails se torna uma grande aliada para o desenvolvimento ágil. Tendo como objetivo hoje em dia que softwares sejam feitos com alta qualidade e em pouquíssimo tempo, Grails constrói facilmente um ORM, omitir

25 funcionalidades complexa, e deixar o desenvolver focado nas regras de negócio. Com isso as transições entre a estrutura de objeto e dados no banco ficam mais fáceis de trabalha. Essa duas grandes vantagem do Grails,agilidade e qualidade faz dele uma ótima opção para ambientes de desenvolvimento. 8 Referências Pfleeger, Shari Lawrence. Engenharia de software: teoria e prática,tradução: Dino Franklin. 2ª ed. São Paulo, PEARSON Prentice Hall, 2004 Sommerville, Ian. Engenharia de software, tradução: Selma Shin Shimizu Melnikoff,Reginaldo Arakai, Edílson de Andrade Barbosa, 8 ª ed. São Paulo, Pearson Addison-Wesley,2007 Ramkrishnan,Raghu; Gehrke, Johannes,Sistema de bancos de dados, tradução Acauan Pereira Fernandes; Celia Taniwaki; João Tortello, revisão técnica Elaine Barros Machado de Sousa. 3. ed.--são Paulo:McGraw-Hill, 2008. Smith, Glen; Lebrook, Peter, Grails in Action, Greenwich, Manning,2009 Disponível em <http://www.itexto.net/devkico/?p=73> Acesso em: 16 jul. 2011 ANEXOS ANEXO A

26

27

28