Grails 1.1 Beta 1发布,增强测试、Gorm、脚手架和插件系统
GORM
更好的 GORM 事件
GORM 已经支持 beforeInsert, beforeUpdate 和 beforeDelete events, 现在添加了对 afterInsert, afterUpdate 和 afterDelete events的支持
支持基础类型集合的存储
GORM 现在通过一个 join table 来支持像 String, Integer 这样的基础类型的集合的存储:
class Person { static hasMany = [nicknames:String] }
增强数据绑定功能
现在更容易对属性的自己和进行数据绑定。在之前的版本中你也许会使用:
person.properties = params
这将会将request中的所有变量绑定到person中。如果你不想绑定所有的数据的话,你可以使用 bindData 方法。现在你可以通过使用subscript operator来绑定部分的变量:
person.properties["firstName","lastName"] = params
要取得domain中的所有属性的一个子集也可以通过这样的方式:
person.properties["firstName","lastName"].each { println it }
以“只读”方式获得对象
现在可以通过read方法来获得“只读”的对象(不能更改、删除):
def book = Book.read(1)
默认排序
现在能够通过在domain中声明sort的方式来指定相关对象的排序方式:
class Book { String title static mapping = { sort "title" } }
也可以在关联中声明sort:
class Author { static hasMany = [books:Book] static mapping = { books sort:"title" } }
Batch Fetching
GORM 现在支持通过在domain中使用DSL来配置 batch fetching (an optimization of lazy loading) :
class Book { String title static mapping = { batchSize 15 } }
也可以在关联中使用:
class Author { static hasMany = [books:Book] static mapping = { books batchSize:15 } }
增强的动态查找器
动态查找器新增对InList的支持 :
def groovyBooks = Book.findByAuthorInList(['Dierk Koenig', 'Graeme Rocher'])
动态查找器现在能够使用query cache:
def books = Book.findByTitle("Groovy in Action", [cache:true] )
动态查找器也能使用悲观锁(pessimistic lock):
def books = Book.findByTitle("Groovy in Action", [lock:true] )
处理遗留数据库的单向一对多关系
单向一对多关系可以通过joinTable 属性来改变其在骑在的数据库中的映射方式:
class Book { String title static belongsTo = Author static hasMany = [authors:Author] static mapping = { authors joinTable:[name:"mm_author_books" , key:'mm_book_id' ] } } class Author { String name 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 文件来配置多个插件源,上述的文件应该包含相应的信息:
grails.plugin.repos.discovery.myRepository="http://svn.codehaus.org/grails/trunk/grails-test-plugin-repo" 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命令来进行安装
相关模板
更多相关资源:
Changelog: http://jira.codehaus.org/browse/GRAILS?report=com.atlassian.jira.plugin.system.project:changelog-panel
Download: http://grails.org/Download
Documentation: http://grails.org/doc/1.1
上一篇: 七月份种什么蔬菜最好?这些应季蔬菜最适合
下一篇: 出名的麻辣烫店有哪些?