(转) 使用Grails进行数据库逆向工程

原贴地址:[url]http://groovyq.net/content/%E4%BD%BF%E7%94%A8grails%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E5%BA%93%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B[/url]

Grials 1.4/2.0将支持数据库的迁移和逆向工程(reverse engineering)。对于数据库的迁移,将基于Liquibase,并且已有LiquiBase插件可以使用。而对于逆向工程,Burt Beckwith新近发布的Grails逆向工程插件可以很容易的就实现这个功能,该插件不依赖Grails 1.4的任何新特性。

该插件可以根据数据库表结构生成对应的Domain Class。听起来还不错!

如下是这个插件示例用法:

安装这个插件:grails install-plugin reverse-engineer。([b]该插件最新的名字已经改为“db-reverse-engineer”[/b])
在数据库中创建表:

create table role (
ids bigint not null auto_increment,
authority varchar(255) not null unique,
primary key (ids)
);

create table user (
id bigint not null auto_increment,
version bigint not null,
password varchar(255) not null,
username varchar(255) not null unique,
primary key (id)
);

create table user_roles (
role_id bigint not null,
user_id bigint not null,
date_updated timestamp not null default CURRENT_TIMESTAMP,
primary key (role_id, user_id)
);

alter table user_roles add index FK143BF46A52388A1A (role_id),
add constraint FK143BF46A52388A1A foreign key (role_id) references role (ids);
alter table user_roles add index FK143BF46AF7634DFA (user_id),
add constraint FK143BF46AF7634DFA foreign key (user_id) references user (id);


在grails-app/conf/Config.groovy文件中加入相关配置:

//设置生成的Domain Class的包名,缺省值为应用的名字,可以自己指定
grails.plugin.reveng.packageName="packagename"

//设置多对多关系的中间表名
grails.plugin.reveng.manyToManyTables = ['user_roles']

//多对多关系的belongto设置,下述设置表示Role对应的Domain Class中指定了belognsTo,即static belongsTo = [User];
grails.plugin.reveng.manyToManyBelongsTos = ['user_roles': 'role']


执行:grails reverse-engineer,就可以在grails-app/domain/packagename目录下看到生成的Domain Class了。
这里需要注意,表Role的主键名字为ids,也没有version这个字段,那么在生成的Domain Class中,会出现如下内容:

static mapping = {
id column: "ids"
version false
}

如果对已经生成的Domain Class进行修改,比如添加属性,依旧会更改数据库的表结构。这种行为仍然还是由DataSource的dbCreate属性控制的,逆向工程插件并没有更改它。

就是这么简单!对于遗留数据库来讲,使用逆向工程比起自己去写Domain Class要方便得多!

感兴趣的读者可以下源[url]https://github.com/grails-plugins/grails-reverse-engineer[/url]源代码和[url]阅读相关文档http://grails-plugins.github.com/grails-reverse-engineer/[/url]。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值