2008-02-09
Grails1.0正式版发布
期待已久的Grails-1.0终于在中国的佳节-春节发布了(一个巧合?
),相比前几个RC版来说,次此主要是BUG的修改,但是相对于0.6来说,变化还是很大的,以下就官方的Release作个简单的翻译。
新特性
以下分别介绍一下
ORM DSL
为了减少跟传统Hiberbate映射的太多依赖,Grails 1.0 RC1就发布了对象关系映射(ORM)的领域相关语言(DSL)。DSL现在允许字定义如下一些特性:
看如下例子:
完整介绍请看这里.
Filters
Grails一直以来都在控制器中支持拦截器.而Filters提供了一种更强大和方便的方式来定义横切面(面向方面的一个概念) 。
你只需要指定特定的动作或者URL,Filters就可以将让其在整个控制器中生效. 比如:
Content Negotation
通过定义HTTP文件头的Accept/Content-Type的内容,Grails现在已经支持内容协商(content negotiation)。 Mime类型可以在Config.groovy中配制:
在控制器的代码如下所示:
Automatic XML/JSON Unmarshalling
JSON和XML请求现在可以通过params对象来自动unmarshall了。假设一个XML请求如下:
在代码中使用如下:
支持外键字段映射和表连接(Join Tables)
Grails' ORM DSL通过关联现在可以支持外键字段映射和表连接。比如为了改变1:1关系的外键你可以如此做:
对单向的1:n或者n:n关系来说,你还可以改变连接表和字段:
JNDI Data Sources
Grails通过定义DataSource的jndiName可以支持JNDI数据源了:
新特性
- GORM的ORM DSL高级映射
- 更容易使用的过滤器(Filters)
- 内容协商(Content Negotiation)的支持
- REST支持
- JNDI支持
以下分别介绍一下
ORM DSL
为了减少跟传统Hiberbate映射的太多依赖,Grails 1.0 RC1就发布了对象关系映射(ORM)的领域相关语言(DSL)。DSL现在允许字定义如下一些特性:
- 表名和字段名
- 继承策略
- 二级缓存的配制
- Id生成策略
- 支持复合Id
- Eager/Lazy 加载
- 数据库索引
- 自定义的Hibernate类型
看如下例子:
class Person {
String firstName
static hasMany = [addresses:Address]
static mapping = {
table 'people'
version false
id column:'person_id'
columns {
firstName column:'First_Name'
addresses lazy:false
}
}
}
class Address {
String street
String postCode
}
完整介绍请看这里.
Filters
Grails一直以来都在控制器中支持拦截器.而Filters提供了一种更强大和方便的方式来定义横切面(面向方面的一个概念) 。
你只需要指定特定的动作或者URL,Filters就可以将让其在整个控制器中生效. 比如:
class SecurityFilters {
def filters = {
loginCheck(controller:'*', action:'*') {
before = {
if(!session.user && !actionName.equals('login')) {
redirect(action:'login')
return false
}
}
}
}
} 完整内容请参考这里
Content Negotation
通过定义HTTP文件头的Accept/Content-Type的内容,Grails现在已经支持内容协商(content negotiation)。 Mime类型可以在Config.groovy中配制:
grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
xml: ['text/xml', 'application/xml']
// etc.
]And requests dealt with via the withFormat
在控制器的代码如下所示:
def list = {
def results = Book.list()
withFormat {
html bookList:result
xml { render results as XML }
}
}
Automatic XML/JSON Unmarshalling
JSON和XML请求现在可以通过params对象来自动unmarshall了。假设一个XML请求如下:
<book>
<title>The Stand</title>
<author>Stephen King</author>
...
</book>
在代码中使用如下:
def save = {
def b = new Book(params['book'])
if(b.save()) {
// deal with book
}
}
支持外键字段映射和表连接(Join Tables)
Grails' ORM DSL通过关联现在可以支持外键字段映射和表连接。比如为了改变1:1关系的外键你可以如此做:
class Book {
Author author
static mapping = {
columns {
author column:'auth_id'
}
}
}
对单向的1:n或者n:n关系来说,你还可以改变连接表和字段:
class Author {
static hasMany = [books:Book]
static mapping = {
columns {
books joinTable:[name:'authors_books', key:'book_id', column:'author_id']
}
}
}
JNDI Data Sources
Grails通过定义DataSource的jndiName可以支持JNDI数据源了:
grails-app/conf/DataSource.groovy
dataSource {
jndiName = "java:comp/env/myDataSource"
}
- 16:57
- 浏览 (679)
- 评论 (5)
- 分类: groovy/grails
- 发布在 Groovy on Grails 圈子
- 相关推荐
评论
zengsun
2008-02-16
强烈期待ing……
看英文的比较费劲。
感谢agile_boy及翻译小组的辛勤工作!
看英文的比较费劲。
感谢agile_boy及翻译小组的辛勤工作!
agile_boy
2008-02-15
to 笨笨狗:
guide部分已经翻译大部分了,不过reference还一点都没有 :),而且目前还只是第一遍粗略翻译。总之,我希望在3-4月份能release出来。
guide部分已经翻译大部分了,不过reference还一点都没有 :),而且目前还只是第一遍粗略翻译。总之,我希望在3-4月份能release出来。
笨笨狗
2008-02-15
1.0的文档翻译,什么时候完成呢?
agile_boy
2008-02-13
zengsun
2008-02-10
如何使用内容协商呀?!
在请求头部加Accept/Content-Type吗?还有我好像记得可以通过URL也可以实现。
记不得了!!!
可以给个例子就好了。
在请求头部加Accept/Content-Type吗?还有我好像记得可以通过URL也可以实现。
记不得了!!!
可以给个例子就好了。
发表评论
- 浏览: 79628 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
藏民生活体验(做糌粑)
共 5 张
共 5 张
链接
最新评论
-
Groovy 1.6-beta-1发布, ...
def f = gsh.find('.', '-name', '*.java', ...
-- by agile_boy -
Groovy 1.6-beta-1发布, ...
多谢了! 不过在groosh里面似乎不能使用通配符 def gsh = new ...
-- by groovyzhou -
Grails 1.0.3发布
to cauxu 如果要深入了解,还是有必要去了解一下Spring和Hibern ...
-- by agile_boy -
Grails 1.0.3发布
使用Grails 需要熟悉Spring hibernate么?
-- by cauxu -
Grails 1.0.3发布
究竟grails 1.1还发不发呀!我最近都偃旗息鼓,学django去了!感觉g ...
-- by zengsun






评论排行榜