Grails 1.1 Beta 1发布

红薯
 红薯
发布于 2008年11月30日
收藏 0

更好的 GORM 事件GORM 已经支持 beforeInsert, beforeUpdate 和 beforeDelete events, 现在添加了对 afterInsert, afterUpdate 和 afterDelete events的支持

支持基础类型集合的存储

GORM 现在通过一个 join table 来支持像 String, Integer 这样的基础类型的集合的存储:

  1. class Person {  
  2.    static  hasMany = [nicknames:String]  
  3. }  

增强数据绑定功能

现在更容易对属性的自己和进行数据绑定。在之前的版本中你也许会使用:

  1. person.properties = params  

这将会将request中的所有变量绑定到person中。如果你不想绑定所有的数据的话,你可以使用 bindData 方法。现在你可以通过使用subscript operator来绑定部分的变量:

  1. person.properties["firstName","lastName"] = params  

要取得domain中的所有属性的一个子集也可以通过这样的方式:

  1. person.properties["firstName","lastName"].each { println it }  

以“只读”方式获得对象

现在可以通过read方法来获得“只读”的对象(不能更改、删除):

  1. def book = Book.read(1)  

默认排序

现在能够通过在domain中声明sort的方式来指定相关对象的排序方式:

  1. class Book {  
  2.   String  
  3.   
  4.   title  
  5.     
  6.   static  
  7.  mapping = {  
  8.      sort "title"  
  9.   
  10.   }  
  11. }  
 

也可以在关联中声明sort:

  1. class Author {  
  2.     static  
  3.   
  4.       
  5.     hasMany = [books:Book]  
  6.       
  7.     static  
  8.  mapping = {  
  9.               books sort:"title"  
  10.   
  11.     }  
  12. }  

Batch Fetching

GORM 现在支持通过在domain中使用DSL来配置 batch fetching (an optimization of lazy loading)

  1. class Book {  
  2.   String  
  3.   
  4.   title  
  5.     
  6.   static  
  7.  mapping = {  
  8.      batchSize 15  
  9.   }  
  10. }  

也可以在关联中使用

  1. class Author {  
  2.     static  
  3.   
  4.   
  5.   
  6.  hasMany = [books:Book]  
  7.     static  
  8.   
  9.   
  10.   
  11.  mapping = {  
  12.               books batchSize:15  
  13.     }  
  14. }  

增强的动态查找器

动态查找器新增对InList的支持 :

  1. def groovyBooks = Book.findByAuthorInList(['Dierk Koenig''Graeme Rocher'])  
 

动态查找器现在能够使用query cache:

  1. def books = Book.findByTitle("Groovy in Action", [cache:true] )  
 

动态查找器也能使用悲观锁(pessimistic lock):

  1. def books = Book.findByTitle("Groovy in Action", [lock:true] )  

处理遗留数据库的单向一对多关系

单向一对多关系可以通过joinTable 属性来改变其在骑在的数据库中的映射方式:

  1. class Book {  
  2.  String  
  3.   
  4.  title  
  5.   
  6.  static  
  7.  belongsTo = Author  
  8.  static  
  9.  hasMany = [authors:Author]  
  10.   
  11. static mapping = { authors joinTable:[name:"mm_author_books" , key:'mm_book_id' ] } } class Author { String name  
  12.   
  13.   
  14.   
  15.  static hasMany = [books:Book] static mapping = { books joinTable:[name:"mm_author_books" , key:'mm_author_id'] } }  

插件

全局插件

现在支持安装全局插件来供所有的 grails 程序使用:

grails install-plugin webtest -global

支持多个插件源(Repository)

Grails 现在支持通过一个 USER_HOME/.grails/settings.groovy 文件或者一个 grails-app/conf/BuildSettings.groovy 文件来配置多个插件源,上述的文件应该包含相应的信息:

  1. grails.plugin.repos.discovery.myRepository="http://svn.codehaus.org/grails/trunk/grails-test-plugin-repo"  
  2. grails.plugin.repos.distribution.myRepository="https://svn.codehaus.org/grails/trunk/grails-test-plugin-repo"  

Automatic Transitive Plugin Resolution

现在插件不再需要被放到SVN中了,当Grails应用程序第一次载入时会通过插件的metadata进行自动安装。另外,插件的依赖问题也得到了解决。

 

测试

新的测试框架

在1.0.x的版本中以插件形式出现的测试框架(test framework )现在被集成到了Grails中。

脚手架

模板和动态脚手架

动态脚手架现在能够使用模板,可以通过install-templates命令来进行安装 相关模板

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Grails 1.1 Beta 1发布
加载中
返回顶部
顶部