database - outside - Accediendo a DB sin clases de dominio con Grails
grails rest mapping (2)
No hay ningún requisito de que una clave principal sea larga, es solo el estándar para Hibernate y Grails. Puede tratar una columna varchar que es única como clave principal con una clase de dominio como esta:
class Person {
String username
String firstName
String lastName
static mapping = {
id name: ''username'', generator: ''assigned''
version false
}
}
Esto funciona para una tabla definida por este DDL:
create table person (
username varchar(255) not null,
first_name varchar(255) not null,
last_name varchar(255) not null,
primary key (username)
);
Agregué ''versión falsa'' porque es un sistema heredado y probablemente no tenga una columna de bloqueo optimista ''versión''.
Me encontré con un problema al intentar crear una aplicación Grails con una base de datos AS400 / DB2. No puedo mapear la mayoría de los archivos porque no tienen un campo único para usar como identificación. E incluso si lo hacen, son un campo basado en texto y no en un formato que podría convertirse en un tipo largo. (No entiendo por qué el PK tiene que ser un tipo de datos largo? Si quisieras una secuencia o AI para el pk, tendría sentido, pero ¿y si solo necesitas una clave única? ¿Me falta algo aquí?)
Me pregunto si es posible mantener el origen de datos que he configurado y simplemente usarlo para acceder directamente a SQL al DB sin tener que usar objetos de dominio.
Algo que vi fue establecer el objeto de dominio como transitorio. Pero no sé si aún podrías hacer algo así sin un campo de identificación. ¿Alguien sabe cómo funciona eso?
¿Algunas ideas?
Gracias, Jon
Puede acceder a la base de datos con bastante facilidad, estamos haciendo lo mismo en ciertos casos por motivos de rendimiento:
class SomeService {
def dataSource;
def nativeAccessMethod = {
def sql = new Sql(dataSource);
def rows = sql.rows("select * from myTable");
/* processing continues ...*/
}
}
El soporte de SQL nativo de Groovy también es agradable.