`
leon1509
  • 浏览: 538186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
原贴地址: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

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

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

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

安装这个插件:grails install-plugin reverse-engineer。(该插件最新的名字已经改为“db-reverse-engineer”)
在数据库中创建表:
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要方便得多!

感兴趣的读者可以下源https://github.com/grails-plugins/grails-reverse-engineer源代码和阅读相关文档http://grails-plugins.github.com/grails-reverse-engineer/
分享到:
评论

相关推荐

    grails 配置mongodb数据库

    总结,配置Grails使用MongoDB数据库主要涉及以下几个步骤:安装MongoDB,添加MongoDB插件依赖,配置数据库连接,创建数据模型,实现业务服务,以及创建控制器处理请求。通过这样的配置和实现,我们就能在Grails中...

    使用 Grails 快速开发 Web 应用程序

    2. **View**:Grails使用GSP(Groovy Server Pages)作为视图,类似于JSP,但更灵活,允许在页面中直接嵌入Groovy代码,实现动态内容的生成。 3. **Controller**:控制器负责处理用户请求,管理业务逻辑,接收表单...

    grails3 CAS链接接数据库

    至于数据库连接,Grails 3默认使用Hibernate作为ORM(对象关系映射)工具,因此在`application.yml`中配置数据库连接信息: ```yaml dataSource: pooled: true jmxExport: true driverClassName: ...

    使用Grails快速开发Web应用

    1. **Domain Class**:表示数据模型,通常与数据库表相对应,Grails利用Hibernate进行对象关系映射。 2. **View (GSP)**:采用GSP(Groovy Server Pages)而非传统的JSP,允许嵌入Groovy代码,用于渲染用户界面。 3....

    Grails3配置单独的数据库properties.pdf

    默认情况下,Grails使用一个名为`dataSource`的主数据源进行连接。然而,为了支持多数据库环境,开发者可以自定义额外的数据源,并在应用程序中按需使用。这在处理分布式系统、微服务架构或者需要分离不同业务数据的...

    Grails Grails Grails

    2. **GORM(Grails Object Relational Mapping)**: GORM 是Grails的ORM框架,提供了与数据库交互的能力,支持关系型数据库,如MySQL、PostgreSQL等。它提供了CRUD操作,以及事务管理和动态查询。 3. **插件系统**...

    111D:\keke\grails指南\笔记\1111111.txt,grails 初学者,使用说明的。

    Grails是一个面向约定(Convention Over Configuration)的框架,这意味着开发者在进行开发时无需过多地关注配置细节,框架会根据约定自动处理大部分工作。它采用了MVC(Model-View-Controller)架构模式,其中模型...

    Eclipse下搭建Grails项目

    - 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...

    Java程序员使用Grails的十大优势

    使用Grails进行开发时,开发者可以通过定义清晰的领域类来实现业务逻辑,从而简化应用程序的复杂度。这种方式使得开发者能够更加专注于业务逻辑本身,而不是被底层的技术细节所困扰。通过领域类,可以直观地看到模型...

    grails使用freemarker.rar

    标题中的“grails使用freemarker.rar”表明这是一个关于如何在Grails框架中应用FreeMarker模板引擎的资源包。FreeMarker是一个开源的、基于Java的模板引擎,它用于生成动态HTML或其他格式的文本,比如XML、PDF等。...

    grails-用户手册

    Grails使用Gradle作为构建工具,提供了`grails war` 命令生成可部署的WAR文件,方便在各种Java应用服务器上部署。 九、测试 Grails内置了测试框架,支持单元测试、集成测试和功能测试。通过`test-app` 命令,可以...

    grails中文使用手册

    6. **Views**:Grails使用GSP作为视图模板,GSP结合了HTML和Groovy,允许在页面上执行逻辑和表达式。GSP还支持标签库,可自定义复用的UI组件。 7. **URL映射**:Grails的URL映射功能允许开发者定义直观、友好的URL...

    使用GORM构建Spring Boot应用程序 Grails指南_ Grails框架.pdf

    在本教程中,我们将探讨如何使用GORM(Grails Object-Relational Mapping)构建Spring Boot应用程序。GORM是Grails框架的核心部分,它为开发者提供了简单、强大的数据持久化功能,支持Hibernate和MongoDB等数据库。...

    grails快速开发web

    - **实战技巧**:包括 GORM (Groovy Object Relational Mapping) 的使用、如何在 Grails 中实现 Ajax 功能、处理遗留数据库的方法、利用遗留框架以及如何在 Grails 中使用 WebFlow。 - **高效编程系列**:涵盖使用 ...

    Grails权威指南 Grails权威指南

    3. **GORM(Grails Object-Relational Mapping)**:Grails的内置ORM工具,允许开发者以声明式的方式操作数据库,支持SQL的CRUD操作,简化了数据持久化的过程。GORM支持多种数据库,如MySQL、PostgreSQL等。 4. **...

    grails中文参考手册

    使用`grails war`命令打包应用为WAR文件,然后在服务器上进行部署。 7. **支持的Java EE容器** Grails兼容广泛的Java应用服务器,包括但不限于Apache Tomcat、Jetty、Resin等,这使得Grails应用能在不同的环境中...

    在Eclipse里使用Grails类创建工具.pdf

    在深入探讨如何在Eclipse环境中使用Grails类创建工具之前,我们先简要回顾一下Grails框架及其核心特性。Grails是一款基于Groovy语言的高性能Web应用开发框架,它遵循约定优于配置的原则,极大地简化了Web应用的开发...

Global site tag (gtag.js) - Google Analytics