首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Grails1.0正式版公布

2012-10-26 
Grails1.0正式版发布期待已久的Grails-1.0终于在中国的佳节-春节发布了(一个巧合? ),相比前几个RC版来说,

Grails1.0正式版发布
   期待已久的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生成策略支持复合IdEager/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.groovydataSource {    jndiName = "java:comp/env/myDataSource"}
,而且目前还只是第一遍粗略翻译。总之,我希望在3-4月份能release出来。
看英文的比较费劲。
感谢agile_boy及翻译小组的辛勤工作!

热点排行