Migração Java para Grails - Base Dados Legado
19/08/2014 11:00
1
Acho que vou me deparar com outro problema na migração do meu projeto, tenho que acessar uma base de dados legada onde as tabelas não possuem chave primaria e não posso altera-las para incluir. Como mapearia estes domínios?
Outra dúvida, ao invés de mapear a tabela para domínio eu poderia criar uma query para um domínio?
Tags: grails, gorm, base dados legado, mapeamento


1
Oi Alexandre,

já topei com um problema similar. Na realidade, você pode mapear views no seu banco de dados para as suas classes de domínio. O problema é que para a maior parte das vezes você terá acesso de somente escrita a estas views, pois são poucos os SGBDs que te permitem inserir registros a partir de uma view.

Com relação ao mapeamento, basta que você use o bloco estático mapping (http://grails.org/doc/latest/ref/Database%20Mapping/Usage.html). Por ele você consegue customizar 100% dos seus mapeamentos.

No caso das suas tabelas sem chave primária, você terá um problema sério, pois estas não se referem a entidades propriamente ditas, mas sim alguma outra coisa. Uma entidade obrigatóriamente deve ser diferenciável das outras no banco de dados a partir de uma ou mais colunas identificadoras. Neste caso, você terá de ver como será feito este mapeamento: será que não seria uma chave composta?


1
Sem problemas ter permissão só de leitura, só preciso consumir as informações da view.

Vou complementar seu link com este Your text to link here... agregou bastante, brother como foi tranquila a configuração.

Bom as tabelas tem algumas colunas identificadoras, permitindo diferenciar um registro do outro. Fiz um dominio de teste ficando da seguinte forma:

class ViewTeste implements Serializable{

String patrocinadora
String plano
String inscricao
String sequencial
String dataPagamento

static mapping = {
table "vw_teste"//NOME DA VIEW
patrocinadora column: "cdpat"
plano column: "nrpla"
inscricao column: "nrisc"
sequencial column: "sqben"
dataPagamento column: "dtmesref"
version false//desabilita a criação do campo version IPC importante pra caramba
id composite:['patrocinadora', 'plano', 'inscricao', 'sequencial']//mapeia a chave composta
}
Um detalhe é que tive que implementar Serializable, pois tomava o erro composite-id class must implement Serializable: br.com.view.ViewTeste. Foi devido ao meu ID ser formado por uma chave composta?


0
Oi Alexandre,

esta é uma necessidade do próprio Hibernate. Chaves compostas ele vai pegar como, por debaixo dos panos, um tipo customizado. E tipos customizados no Hibernate obrigatóriamente devem implementar a interface java.io.Serializable.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto