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}class SecurityFilters { def filters = { loginCheck(controller:'*', action:'*') { before = { if(!session.user && !actionName.equals('login')) { redirect(action:'login') return false } } } }} 完整内容请参考这里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 } }}<book> <title>The Stand</title> <author>Stephen King</author> ...</book>
def save = { def b = new Book(params['book']) if(b.save()) { // deal with book }}class Book { Author author static mapping = { columns { author column:'auth_id' } }}class Author { static hasMany = [books:Book] static mapping = { columns { books joinTable:[name:'authors_books', key:'book_id', column:'author_id'] } }}grails-app/conf/DataSource.groovydataSource { jndiName = "java:comp/env/myDataSource"} ,而且目前还只是第一遍粗略翻译。总之,我希望在3-4月份能release出来。