在grails中,我们既可以使用GORM来实现O/R mapping,也可以使用已经定义好的基于hibernate的java实现,mapping文件方式或annontation方式都可以。
首先介绍一下GORM。
Groovy代码
- class Book {
- static withTable = "book_table"
- static transients = [ "digitalCopy" ]
- static constraints = {
- releaseDate(nullable: true)
- }
-
- String author = 'Author unknown'
- String title
- Date releaseDate
- File digitalCopy
- }
- 指定表名:定义一个名为withTable的属性,默认的表名为Domain类名
- 不需要持久化的属性: 在domain中添加一个名为transients的list,并列出不需持久化的属性名
- 非空限制: 添加一个constraints的list
- 默认值: 在字段后直接赋值
- 属性命名时要注意回避SQL的保留字
One-to-One关系
在GORM中可以方便地指定一个属性是另一个类的对象,但是要实现级联删除这样的功能,需要如下指定:
- class Face {
- static belongsTo = Nose
- Nose nose
- }
这样指定后,一个Nose被删除,所有使用它的Face都会被删除。
One-to-Many & Many-to-One 当指向类(Book)中有多个同类(Author)字段时,可以使用mappedBy指定
- class Author {
- static hasMany = [ books : Book ]
-
- String name
- }
- class Author {
- static hasMany = [books:Book, coBooks:Book]
- static mappedBy = [books:"mainAuthor", coBooks:"coAuthor"]
-
- String name
- }
添加时,使用author.addToBooks(book)或者author.addToCoBooks(book)将book加入到指定的集合中。
Many-to-Many
在两端都指定hasMang即可,不过要注意的是,必须要在某一端指定belongsTo
Composition
在GORM中可以实现组合映射,即一个复杂属性映射到表中的几个字段。使用Embedded列表列出需要实现compostion的属性即可。
Inheritance
直接在类名上用extends就完了,都不用标记Discriminator的。
分享到:
相关推荐
标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-editor"表明这是一个与Grails框架相关的插件,具体来说是FCKeditor的一个版本。FCKeditor是一款广泛使用的开源富文本编辑器,它允许用户在网页上创建和编辑...
Grails1.1中文文档-----2009.3.25
总之,"grails-datastore-gorm-plugin-support-2.0.4.RELEASE.zip"提供了一个宝贵的资源,让开发者有机会学习和实践Grails的ORM功能和Android的MVC设计模式。无论是对Grails框架的探索,还是对Android开发的深化,这...
`grails-doc-CN-1.0.rar` 文件包含的是 Grails 1.0 版本的中文参考文档,对于那些不熟悉英文文档或者想要深入了解 Grails 的中文用户来说,这是一个极其宝贵的资源。 文档主要涵盖以下几个关键知识点: 1. **...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。
Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。 Grails这个独特的框架被视为是提升工程师生产效率的动态工具,因为其...
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-...
总结,"Grails-开源框架---使用指南.pdf"和"Groovy入门经典(中文).pdf"这两本书将帮助读者深入理解Grails框架和Groovy语言,从而更好地开发基于JVM的现代Web应用程序。通过学习这两本书,开发者可以掌握如何利用...
本文将深入探讨Grails的中文文档以及“grails-fckeditor-0.9.5”插件的相关知识点。 一、Grails框架基础 1. Groovy语言:Grails的基础是Groovy,这是一种面向对象、动态类型的编程语言,语法简洁且与Java高度兼容...
grails-doc-1.0-beta1-中文.rar。Grails 1.0 学习资料。
这个名为"grails-web-url-mappings-2.5.4.zip"的压缩包包含了Grails 2.5.4版本中的Web URL映射相关代码,让我们深入探讨这一关键组件。 Grails是一个基于Groovy语言的全栈式Java web框架,其设计理念是“简洁、生产...
1. **高度集成**:Grails不仅集成了Groovy和Spring框架的优点,还与其他流行的技术如Hibernate等无缝结合。 2. **代码即配置**(Convention over Configuration):遵循这一原则,简化了配置过程,使开发者能够更加...
打开Grails命令行并运行create-app grails3-spring-security-demo --profile=web 更新了grails-app/conf/logback.groovy并添加了以下内容: // added so that we get more of the Spring Boot startup logger( ' ...
Java web development is notoriously tedious, but help is on the way: Grails. Using the principle of convention-over-configuration and the dynamic Groovy programming language, Grails takes the pain out...
标题 "grails-datastore-gorm-tck-1.0.9.RELEASE.zip" 提供的信息表明,这是一个与Grails框架相关的数据存储(Datastore)和GORM(Grails Object Relational Mapping)测试兼容性工具包(Test Compatibility Kit,...
1. **动态类型语言Groovy**:Grails使用Groovy作为主要编程语言,这是一种运行在Java平台上的动态语言,具有简洁、易读的语法,支持面向对象编程和函数式编程风格。 2. **Spring框架集成**:Grails内置了Spring框架...
grails1.0开发框架1 类似于ruby on rails的框架。