Ir al contenido principal

Grails Transactions

Las transacciones en Grails la podemos hacer con
Dominio.withTransaction {
// bloque dentro de la transacción
}


Aunque esta no es la forma recomendada, es la más fácil, porque funciona en todos lados (controladores, servicios, etc). Ahora bien, si usamos la capa de servicios de grails, esta viene con esa funcionalidad
class DominioService {
static transactional = true
//Método transaccional
def metodo1() {
// código dentro de la transacción
}
// Método transaccional 2
def metodo2(param1, param2) {
// código dentro de transacción
}
// En un cierre (closure) grails no puede iniciar
// una transacción al iniciarlo automáticamente
def cierre1 = {
// código FUERA de transacción
Dominio.withTransaction {
// código dentro de transacción
}
}
}

Como pueden ver, es interesante el manejo de transacciones en Grails...

Comentarios

Entradas más populares de este blog

OpenSolaris, Clúster de Glassfish y Sun Java Web Server Loadbalancer

Pues estuve necesitando un clúster de Glassfish V2U2 para lo cual encontré rápidamente mucha información en Internet, el que más me gustó fue un blog de Ryan Wilson , pero también necesitaba poner el balanceador de cargas ( loadbalancer ) asi que para eso utilicé la documentación de Glassfish . Aquí el resúmen: Instalar OpenSolaris 200805 y despues realizar lo que les sugieren en los Release Notes , en donde te dicen que actualices su herramienta para instalar paquetes. NOTA: Antes de hacer esto, asegurarse de tener todas las máquinas que van a participar dentro del cluster mapeadas con un DNS, de no ser esto posible sus archivos de hosts deben de tener la información suya y de cada una de las máquinas que van a participar. (Gracias a equipo Telcel) Despues de esto seguir las instrucciones de Ryan . Con esto vas a tener el cluster de glassfish funcionando. Solo que en la configuración del segundo servidor puedes hacer lo siguiente para evitar los pasos 4 al 6 (lo siguiente todo en una...

Reporte Excel con JasperReports

Pues no funcionó el reporte con Jasper, pude hacer que evitara paginar con estas opciones ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); JRXlsExporter exporterXLS = new JRXlsExporter(); exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); // exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE); exporterXLS.s...

Problema con Grails

Pues después de disfrutar un maravilloso sábado en compañía de mi familia, me puse a resolver un problema que se sucitó ayer en la clase mientras les explicaba acerca de Grails, me pidieran que si podía hacer una tarea muy común en el desarrollo de páginas web, esto es, desaparecer cierta funcionalidad y aparecerla cuando se activara algo, pero por alguna razón no pude ayer... Yo sé que andaba enfermo, desvelado y todo, pero bueno, el fin es que no le dí... ahorita revisándolo noté que estaba rompiendo una regla básica de html, estaba tratando de romper una tabla con un div, cosa que no se puede, la solución a este problema es ya sea hacer una columna y hacer un colspan con ella para mostrar lo que queremos (pero tendremos problemas con el diseño) o hacer dos div's, uno por columna, con esto mantendremos el diseño pero tendremos un poco más de código que mantener, que al final de cuentas sería lo que yo haría... en fin, esta es la solución... espero les sirva...