期待已久的Grails-1.0终于在中国的佳节-春节发布了(一个巧合?
),相比前几个RC版来说,次此主要是BUG的修改,但是相对于0.6来说,变化还是很大的,以下就官方的Release作个简单的翻译。
新特性
- 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"
}
分享到:
相关推荐
《Grails 1.0_final Doc and API:深入理解Groovy框架的基石》 Grails,作为基于Groovy语言的Web开发框架,以其强大的生产力和灵活性,在Java开发者中备受推崇。"Grails 1.0_final_doc_and_API"是Grails 1.0版本的...
### Grails 1.0:敏捷、工业级的快速Web应用开发框架 #### 引言 Grails 1.0框架旨在提供一个敏捷且强大的工具集,用于加速Web应用程序的开发过程。它融合了Groovy语言的灵活性与Spring框架的强大功能,以及...
文件包含的是 Grails 1.0 版本的中文参考文档,对于那些不熟悉英文文档或者想要深入了解 Grails 的中文用户来说,这是一个极其宝贵的资源。 文档主要涵盖以下几个关键知识点: 1. **Groovy 语言基础**:Grails ...
grails-doc-1.0-beta1-中文.rar。Grails 1.0 学习资料。
grails1.0开发框架5 类似于ruby on rails的框架。
grails1.0开发框架4 类似于ruby on rails的框架。
grails1.0开发框架1 类似于ruby on rails的框架。
grails1.0开发框架3 类似于ruby on rails的框架。
《Grails框架API文档详解——基于grails-docs-1.0》 Grails是一种基于Groovy语言的开源Web应用框架,它简化了Java开发,提供了丰富的功能和强大的工具,深受开发者喜爱。本文将深入探讨grails-docs-1.0版本的API...
grails1.0开发框架6 类似于ruby on rails的框架。
grails1.0开发框架2 类似于ruby on rails的框架。
#### 六、Grails版本发布 文档还列出了不同版本的Grails,例如: - **0.5** - **0.5.5** - **0.6** - **1.0-RC1** 每个版本都附带了相应的发布说明,记录了新功能、修复的问题以及已知的限制等信息。这有助于...
- **软件需求**:Grails 1.0rc1、JDK 1.5或更高版本、MySQL和MySQL JDBC Driver(非必需)、Eclipse 3.2或更高版本(带Web Tools和Groovy插件,非必需)。 #### 结语 Grails为Web开发提供了强大的框架支持,尤其...
### Grails入门指南知识点 #### 一、Grails框架简介 - **背景**: Grails是一个基于Groovy语言的开源Web应用框架,适用于Java平台。它旨在简化开发过程,提高开发效率,尤其受到那些希望保留Java环境同时寻求更高效...
《Grails权威指南 中文版》是一本专注于Grails框架和Groovy语言的中文版技术书籍。本书的作者是Grails项目负责人Graeme Keith Rocher,他将自己对于Grails框架的深刻理解和使用经验编纂成书,以便向读者全面介绍这一...
《The Definitive Guide to Grails 2》是Grails框架深入学习的重要参考资料,由业界专家撰写,旨在为开发者提供全面、详尽的Grails 2技术指导。这本书结合了理论与实践,不仅介绍了Grails的基本概念,还涵盖了高级...
### Grails框架中文第二版知识点概述 #### 一、简介 **Grails 2.0新特性** 1. **面向开发的特性** - 改进了开发者体验,例如通过简化配置来提高开发效率。 - 引入了新的工具和功能,如Groovy模板引擎Thymeleaf...
**Grails 框架详解** Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式...
- 首先,你需要从Grails官网(http://grails.org/)下载最新版的Grails安装包。 - 安装完成后,确保设置`GRAILS_HOME`环境变量,并将其路径添加到系统的`PATH`变量中,确保这两个变量都在同一级别(用户级或系统级...
《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...