Groovy轻松入门——Grails实战之GORM篇
摘要:GORM就是以前我刚学Groovy没多久时想实现的功能,它使开发人员不需要关心数据库方面,也不需要任何配置,只需专心用OO思想设计自己的系统,还有一个好处就是开发时不用备份数据库,因为GORM会自动帮你建表以及约束(但数据库需要你自己建),让我们来看一下用Grails开发是多么简单高效吧! ? 在写域类时,无须添加与业务无关的属性,比如在用Hibernate时,我们需要(不强制)在类中定义id,但用GORM时,id无须自己声明,GORM 会帮我们自动添加id和version。GORM通过反射机制获得域类属性信息决定数据库字段类型,所以在定义域类时不要使用def关键字来定义属性,务必明确定义属性类型,比如在下面的域类Article中,用String来定义content(而不是def content),在默认情况下,String映射到数据库中的字段类型是VARCHAR(Date映射到数据库中的字段类型是DATETIME),如果通过类变量contraints定义了String的长度范围,且长度过长,映射到数据库中的字段类型会变为TEXT,十分智能。 ?
如果将数据源/grails-app/conf/XXXDataSource中的String dbCreate = "update",Grails会自动帮我们同步内存和数据库中域类对象的状态,这点是很方便的,不需要在每次修改对象后,update了(GORM中的 save()相当于Hibernate中的saveOrUpdate()),其好处犹如Java中,new出一个对象,当不再使用此对象时,不需要自行 delete一样。在实际开发中您就会体会到了。 1,一对一关系: ?
? 级联更新/保存:当Dog对象更新/保存,Dog对象所引用的Trail对象也更新/保存;反之亦然。 ?
关于保存,更新和删除与一对一关系相同,都是级联更新/保存和级联删除,当Dog被删除时,由于Foot belongsTo(属于) Dog,所以Dog对象所引用的所有Foot对象全被删除;而当Foot对象被删除时,Dog对象不会被删除。这是通过类变量belongsTo实现的。 3,多对多关系:
更新/保存在多对多关系中,相对一对一,一对多,多对一关系中要特殊点,就是只有‘拥有方’可以级联更新/保存,比如在本例中,由于Student belongsTo Teacher ,所以Teacher是‘拥有方’,Teacher的更新/保存将引起Teacher对象所引用的所有Student对象的更新/保存。
4,继承关系: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |