快速业务通道

精通Grails: GORM - 有趣的名称,严肃的技术 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
运行:开发模式、测试模式和生产模式。 在输入 grails prod run-app 时,就是告诉 Grails 使用 production 块中的数据库设置。如果希望根 据环境调整 username 和 password 的设置,只要将这些设置从 dataSource 块复制到每个 environment 块,并修改设置的值即可。 environment 块中的设置覆盖 dataSource 块中的设置。

url 设置是 JDBC 的连接字符串。请注意在 production 模式下,HSQLDB 使用基于文件的数据存储。 在 development 和 test 模式下,HSQLDB 使用内存中的数据存储。上个月我介绍过如果想让 Trip 的记 录在服务器重新启动之后保留,应该在 production 模式下运行。现在您应该知道如何在 development 和 test 模式下进行设置以实现这一功能 — 只要将 url 设置从 production 复制过来即可。当然,将 Grails 指向 DB2、MySQL 或者其他传统的基于文件的数据库也可以解决记录消失的问题(立刻就会介绍 DB2 和 MySQL 的设置)。

dbCreate 的值在不同的环境下会产生不同的行为。它是底层的 hibernate.hbm2ddl.auto 设置的别名 ,负责指定 Hibernate 在幕后如何管理表。将 dbCreate 设为 create-drop,就是告诉在启动的时候创 建 表,在关闭的时候删除 表。如果将值改为 create,那么 Hibernate 会在需要的时候创建新表和修改 现有表,但是重新启动之间的所有记录都会被删除。production 模式的默认值 — update — 会在重新 启动之间保持所有数据,也会在需要的时候创建或修改表。

如果对传统的数据库使用 Grails,那么我强烈推荐注释掉 dbCreate 的值。这样就告诉 Hibernate 不要触及数据库的模式。虽然这意味着必须自行保持数据模型与底层数据库同步,但这可以大大减少愤怒 的 DBA 为了弄清楚谁在未经允许的情况下不断修改数据库表而发来的质问邮件。

添加自定义环境也很容易。例如,公司中可能有一个 beta 程序。只要在 DataSource.groovy 中其他 块之后创建一个 beta 块即可(也可以针对与数据库无关的设置在 grails-app/conf/Config.groovy 中 添加一个 environments 块)。要在 beta 模式下启动 Grails,请输入 grails -Dgrails.env=beta run-app。

修改数据库

如果通过 dbCreate 设置允许 Hibernate 管理表,那么只需三步就能迅速地将 Grails 指向新表:创 建数据库并登录,将 JDBC 驱动程序复制到 lib 目录,调整 DataSource.groovy 中的设置。

对于不同的产品,创建数据库和用户的操作过程有很大差异。对于 DB2 来说,可以按照一份联机的详 细教程逐步进行(请参阅 参考资料)。创建了数据库和用户之后,请调整 DataSource.groovy,让它使 用清单 11 中的值(这里显示的值假设使用的数据库名为 trip)。

清单 11. DataSource.groovy 的 DB2 设置

driverClassName = "com.ibm.db2.jcc.DB2Driver"   username = "db2admin"   password = "db2admin"   url = "jdbc:db2://localhost:50000/trip"

如果安装了 MySQL,那么请使用清单 12 所示的步骤登录为 root 用户,并创建 trip 数据库:

清单 12. 创建 MySQL 数据库

$ mysql --user=root mysql> create database trip; mysql> use trip; mysql> grant all on trip.* to grails@localhost identified by ''server''; mysql> flush privileges; mysql> exit $ mysql --user=grails -p --database=trip

创建了数据库和用户之后,请调整 DataSource.groovy,让它使用清单 13 所示的值:

清单 13. DataSource.groovy 的 MySQL 设置

driverClassName = "com.mysql.jdbc.Driver"   username = "grails"   password = "server"   url = "jdbc:mysql:/

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号