上一节主要是对象和对象之间的关系建立,还有一种自参照关系。实际上是1:m的变体,只是多的一方参照的还是自身
比如一个User可以关注其他User,就可以使用自参照建立关系
1、修改User
class User {
static hasMany = [ posts : Post, tags : Tag, following : User ]
......
}
这里使用following进行自身关联
2、编写一个测试方法
在UserIntegrationTests类中增加一个testFollowing方法
1 /**
2 * 测试自关联关系
3 */
4 @Test
5 void testFollowing() {
6 def glen = new User(userId: 'glen', password:'password').save()
7 def peter = new User(userId: 'peter', password:'password').save()
8 def sven = new User(userId: 'sven', password:'password').save()
9
10 glen.addToFollowing(peter)
11 glen.addToFollowing(sven)
12
13 assertEquals 2, glen.following.size()
14 sven.addToFollowing(peter)
15 assertEquals 1, sven.following.size()
16 }
following关联关系是引用addToFollowing()方法增加关联信息
3、以上就是所有已经建立好的关系,Grails运行起来后会自动生成相应的表结构如下:
4、总结和最佳实践
- Use domain-driven design:使用对象模型的思维去实现对象之间的关系,再形成表结构,甚至不用去关心数据存储
- Learn the basic modeling options well:对模型了解的透彻了,对业务也就了解了。在设计模型时尽量简单
- Use tests to experiment:利用测试工具验证模型关系是否正确,是否能达到预期的效果
- Don’t trust users—validate:不要相信用户(软件使用人员),因为用户操作的想象力比设计者丰富,尽量在系统中验证数据
5、代码清单
domain
package:com.grailsinaction
User.groovy
Porfile.groovy
Post.groovy
Tag.groovy
test\integration
package:com.grailsinaction
PostIntegrationTests.groovy
UserIntegrationTests.groovy
6、代码打包下载
分享到:
相关推荐
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。
elasticsearch-grails-plugin, 恢复的ElasticSearch grails插件 Elasticsearch插件插件这个项目是一个基于Elasticsearch的插件,这个项目是基于的人完成的伟大工作的。你为什么想要为原来的Elasticsearch插件提供...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...
Getting-Started-with-Grails-Chinese,一本不错的grails入门书籍,希望对有志于grails的朋友们有用。
Grails In Action.pdf ebook
Grails in Action pdf
Grails in Action - Presentation pdf
Grails in Action Grails in Action Grails in Action Grails in Action Groovy in Action Grails in Action Grails in Action Groovy in Action Groovy in Action
wsdl2java源码 请注意,当前的 3.x 版本使用 cxf 3.0.4 并且需要 WSS4J ...grails-app\endpoints** 和 grails-app\services** 目录中自动装配配置的类 端点创建脚本 create-endpoint 和 create-endpoin
ant-1.9.4jarant-antlr-1.9.4.jarant-junit-1.9.4jar ant-launcher-1.9.4.jar bsf-2.4.0.jar commons-cli-1.2jar commons-logging-1.2.jar gpars-1.2.1.jar groovy-2.4.5jar groovy-ant-2.4.5.jar ...
基于java的动态语言Groovy 构建的敏捷web开发框架grails经典入门教程
Grails In Action 2009最新版,英文的。很详细,学习groovy和grails的不二之选。
Grails入门指南中文pdf -- 针对grails1.0.4更新,附加idea8 开发grails的流程
实测可用
实测可用
实测可用
实测可用