Mostrando entradas con la etiqueta Grails. Mostrar todas las entradas
Mostrando entradas con la etiqueta Grails. Mostrar todas las entradas

lunes, 21 de mayo de 2012

Grails - Conexión a una base de datos

Si bien es cierto Grails nos provee de una base de datos, esta es sumamente básica, por lo que generalmente trabajaremos con una base de datos diferente, por ejemplo PostgreSQL, MySQL, Oracle, etc.

Por suerte, gracias a lo que nos ofrece, hacer esto en Grails, no es para nada complicado. En primero lugar creamos la aplicación y luego creamos una base de datos, en este caso lo haremos en Mysql:
$ grails create-apps nombre_aplicacion
$ mysql -u root -p
//Ingresar contraseña
create database testgrailsdb
quit
O también podemos hacerlo un poco más fácil si es que utilizamos un administrador como PhpMyAdmin.

Ahora debemos descargarnos el conector que hará la conexión con la base de datos, en este ejemplo utilizaré MySQL, para esto vamos a http://dev.mysql.com/downloads/connector/j/ y lo dejamos en el directorio lib, si estas en Netbeans lo dejas en Libraries.

Luego creamos un dominio, le creamos atributos y generamos el control y la vista para este. Para hacer esto debemos estar dentro del directorio de nuestra aplicación.
$ grails create-domain-class Persona
$ nano grails-app/domain/
//Agregamos los campos que deseemos, por ejemplo
class Personas {
    String nombre
    String apellido
 
static constraints = {
    }
}
//Ahora generamos el controlador y la vista para esto
grails generate-all Personas
Una vez terminado todo esto debemos ir al fichero DataSource.groovy.
grails-app/conf/DataSource.groovy
O si es como en mi caso, que utilizan Netbeans como IDE de desarrollo, deben ir a:
Configuration/DataSource.groovy
Una vez dentro de este fichero, encontraremos varias líneas de código, parecido a esto:
dataSource {
    pooled = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb;MVCC=TRUE"
            pooled = true
            properties {
               maxActive = -1
               minEvictableIdleTimeMillis=1800000
               timeBetweenEvictionRunsMillis=1800000
               numTestsPerEvictionRun=3
               testOnBorrow=true
               testWhileIdle=true
               testOnReturn=true
               validationQuery="SELECT 1"
            }
        }
    }
}
El cual debemos modificarlo y dejar algo parecido a esto:
dataSource {
    pooled = true
    driverClassName = 'com.mysql.jdbc.Driver'
    dbCreate = 'update'
    username = "nombreusuario"
    password = "contraseña"
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            url = "jdbc:mysql://localhost:3306/nombredb" // one of 'create', 'create-drop', 'update', 'validate', ''
            username = "nombreusuario"
            password = "contraseña"
        }
    }
    test {
        dataSource {
            url = "jdbc:mysql://localhost:3306/nombredb" // one of 'create', 'create-drop', 'update', 'validate', ''
            username = "nombreusuario"
            password = "contraseña"
        }
    }
    production {
        dataSource {
            url = "jdbc:mysql://localhost:3306/nombredb" // one of 'create', 'create-drop', 'update', 'validate', ''
            username = "nombreusuario"
            password = "contraseña"
            }
        }
    }
}
Este ejemplo mostramos como conectarnos a MySQL, pero la base es muy similar para otros motores de base de datos.


Como dato, dentro de las clases encontramos “Static constraints” dentro de este tenemos harto para jugar, por ejemplo hacer que sea “not null” “unique”, entre otros, ejemplo básico de esto es:
class Personas {
    String nombre
    String apellido
   
    static constraints = {
nombre(unique: true, blank: false)
apellido(blank:false)
    }
}

martes, 10 de abril de 2012

Grails - Instalar Grails Framework en Debian

Grails es un framework para aplicaciones web libre desarrollado sobre el lenguaje de programación Groovy (el cual a su vez se basa en la Java platform). Grails pretende ser un marco de trabajo altamente productivo siguiendo paradigmas tales como convención sobre configuración o no te repitas (DRY), proporcionando un entorno de desarrollo estandarizado y ocultando gran parte de los detalles de configuración al programador.

Grails es basicamente un Framework de desarrollo de aplicaciones web, en el que usamos principalmente el lenguaje de Java y Groovy, incluso se puede mesclar el codigo.Es un framework que funciona bajo un modelo conocido como MVC o "modelo vista controlador", en el que principalmente lo que se hace es crear "Controladores" que son como servicios que manipulan nuestra aplicación web, y todo el codigo de estos controladores es ejecutado en el servidor web.

Una forma sencilla de instalar Grails en Debian es agregando repositorios de Ubuntu, de la siguiente forma:

En primera instancia agregamos los repositorios:
echo "deb http://ppa.launchpad.net/groovy-dev/grails/ubuntu lucid main" >> /etc/apt/sources.list
Luego instalamos la key:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E354FBD902A9EC29
Hacemos un update
aptitude update
Finalmente solo lo instalamos:
aptitude install grails

La verdad no se porque esta opción ya no me ha resultado, en vista de eso he instalado Grails de la manera tradicional, he creado un script para instalar la versión 2.1.0, el cual es el siguiente:


#!/bin/bash
#name           :       Nicolas Ormeno Rojas
#email          :       ni.ormeno at gmail dot com
#licence        :       GLPv3
#date           :       20120814
#description    :       grails installation in debian 
#instalamos java jdk
aptitude install default-jdk 
#descargamos grails 2.1.0
wget http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.1.0.zip 
#descomprimimos y copiamos directorio grails
aptitude install zip unzip
unzip grails-2.1.0.zip
sudo cp -r grails-2.1.0/ /opt/ 
#configuramos
export JAVA_HOME=/usr/lib/jvm/default-java
export GRAILS_HOME=/opt/grails-2.1.0/
export PATH=$PATH:$GRAILS_HOME/bin
También dejo para descargar el script, simplemente le damos permisos de ejecución y luego lo ejecutamos

Descargar Script