Grails on rails (M - 1)

     在grails中,我们既可以使用GORM来实现O/R mapping,也可以使用已经定义好的基于hibernate的java实现,mapping文件方式或annontation方式都可以。

     首先介绍一下GORM。

Groovy代码
  1. class Book {  
  2.     static withTable = "book_table"   
  3.     static transients = [ "digitalCopy" ]      
  4.     static constraints = {      
  5.         releaseDate(nullable: true)      
  6.     }      
  7.      
  8.     String author = 'Author unknown'       
  9.     String title      
  10.     Date releaseDate      
  11.     File digitalCopy      
  12. }     
  • 指定表名:定义一个名为withTable的属性,默认的表名为Domain类名
  • 不需要持久化的属性: 在domain中添加一个名为transients的list,并列出不需持久化的属性名
  • 非空限制: 添加一个constraints的list
  • 默认值: 在字段后直接赋值
  • 属性命名时要注意回避SQL的保留字

  

  One-to-One关系

   在GORM中可以方便地指定一个属性是另一个类的对象,但是要实现级联删除这样的功能,需要如下指定:

 
  1. class Face {   
  2.     static belongsTo = Nose   
  3.     Nose nose   
  4. }  

  这样指定后,一个Nose被删除,所有使用它的Face都会被删除。

  One-to-Many & Many-to-One    当指向类(Book)中有多个同类(Author)字段时,可以使用mappedBy指定

  1. class Author {   
  2.     static hasMany = [ books : Book ]   
  3.   
  4.     String name   
  5. }  

 

  1. class Author {   
  2.     static hasMany = [books:Book, coBooks:Book]   
  3.     static mappedBy = [books:"mainAuthor", coBooks:"coAuthor"]   
  4.   
  5.     String name   
  6. }  

  添加时,使用author.addToBooks(book)或者author.addToCoBooks(book)将book加入到指定的集合中。

 Many-to-Many

 在两端都指定hasMang即可,不过要注意的是,必须要在某一端指定belongsTo

 Composition

 在GORM中可以实现组合映射,即一个复杂属性映射到表中的几个字段。使用Embedded列表列出需要实现compostion的属性即可。

 Inheritance

 直接在类名上用extends就完了,都不用标记Discriminator的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值