usar tutorial example español como grails

example - grails tutorial



¿Cómo se accede a dos bases de datos en Grails? (6)

¿Realmente quieres hacer esto? En mi experiencia, el escenario habitual aquí es:

  1. Una aplicación administra sus propios datos en su propio esquema de base de datos
  2. A menudo, la aplicación requerirá datos de otras fuentes (por ejemplo, para que los datos de referencia no se copien y peguen)

Normalmente siempre he tenido el lujo de todos los esquemas que residen en la única instancia de base de datos. Por lo tanto, mi aplicación:

  • solo tiene una conexión de base de datos, que corresponde al esquema que posee y tiene acceso de lectura / escritura
  • las otras aplicaciones ''exportan'' sus datos a través de vistas
  • mi aplicación tiene acceso de lectura a esas vistas, y tiene un sinónimo para esa vista que hace que parezca local

La razón detrás del uso de vistas es que la aplicación que está exponiendo los datos

  1. sabe explícitamente que se está exportando y qué se está exportando
  2. no expone la estructura interna del esquema (por lo tanto, si la estructura interna cambia, siempre que la vista sea correcta, las aplicaciones que lo consumen no lo saben)

No he tenido que hacer esto con una aplicación de Grails, pero el enfoque debería funcionar.

Otro enfoque para compartir datos entre aplicaciones es crear un servicio web para exponer los datos. Grails lo hace fácil.

Espero que ayude, pero este enfoque puede no ser aplicable en todas las situaciones.

Grails hace que sea muy fácil configurar las fuentes de datos para diferentes entornos (desarrollo, prueba, producción) en su archivo DataSources.groovy, pero parece que no hay ninguna posibilidad para configurar múltiples fuentes de datos en un entorno. ¿Qué debo hacer si necesito acceder a varias bases de datos desde la misma aplicación Grails?



Conectar diferentes bases de datos en diferentes clases de dominio es muy fácil en Grails 2.xx

por ejemplo

development { dataSource {//DEFAULT data source . . } dataSource_admin { //Convention is dataSource_name url = "//db url" driverClassName = "oracle.jdbc.driver.OracleDriver" username = "test" password = ''test123'' } dataSource_users { } }

Puede usar cualquier fuente de datos en sus clases de dominio por

class Role{ static mapping = { datasource ''users'' } } class Product{ static mapping = { datasource ''admin'' } }

Para más detalles mira esto


Grails 2.0 puede manejar múltiples fuentes de datos sin un plugin:

Ejemplo con un origen de datos diferente para los entornos dev (h2 dataSource) y test (mysql dataSource_mysql):

DataSource.groovy:

dataSource { pooled = true driverClassName = "org.h2.Driver" username = "sa" password = "" } dataSource_mysql { dialect = org.hibernate.dialect.MySQLInnoDBDialect driverClassName = ''com.mysql.jdbc.Driver'' username = "user" password = "pass" url = "jdbc:mysql://mysqldb.com/DBNAME" } 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 { configClass = HibernateFilterDomainConfiguration.class dbCreate = "update" // one of ''create'', ''create-drop'', ''update'', ''validate'', '''' url = "jdbc:h2:file:../devDb;MVCC=TRUE" sqlLogging = true } } test { dataSource_mysql { configClass = HibernateFilterDomainConfiguration.class dbCreate = "create" // one of ''create'', ''create-drop'', ''update'', ''validate'', '''' sqlLogging = true } } production { dataSource { dbCreate = "update" url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000" pooled = true properties { maxActive = -1 minEvictableIdleTimeMillis=1800000 timeBetweenEvictionRunsMillis=1800000 numTestsPerEvictionRun=3 testOnBorrow=true testWhileIdle=true testOnReturn=true validationQuery="SELECT 1" } } } }


La siguiente publicación parece ser la mejor fuente de información sobre el tema:

Cómo obtener mutli-dataSource en griales

Se reduce a:

  • Definir datasource1 en DevelopmentDataSource
  • Definir datasource2 en resources.xml
  • Escribir un DAO para CRUD de los objetos de dominio utilizando datasource2
  • En hibernate.cfg.xml, liste todos los objetos de dominio.

Solo el primer origen de datos tendrá métodos dinámicos de búsqueda.

Si lo que busca es una consulta realmente simple y no le molesta tener las características de ORM, puede usar Groovy SQL o las características SQL nativas de Hibernate.