Ruby on Rail尽管不断吸引软件工程领域的注意,但企业级的开发室仍然对其很不信任.为什么?“基于脚本语言的框架难道也能符合企业级应用么?!” 对于RoR,最主要的论据就是他们缺乏企业级服务(例如分布式事务,消息等)。对很多业务来说,没有这些服务的平台是根本不予考虑的。
Grail就是一个快速的企业级快速应用开发工具。它基于Groovy语言,可以无缝的集成Java的服务,同时也提供了脚本语言的巨大便利。
为了显示它的企业集成能力,Grails可以快速方便的构建一个web应用程序,后端使用EJB3实体beans。但是,不仅仅如此,Grails让你可以对实体bean实现动态控制,而不需要你修改EJB的源代码。Grails Object Relational Mapping (GORM)是基于Hibernate 3的(最终也会支持Java Persistence API),并且使用Groovy's Meta Object Protocol (MOP)来添加各种手工动态方法给实际上静态的实体bean。这些方法不仅可以给Grails和Groovy调用;Java代码也可以调用。这样我们就同时拥有了JEE/EJB3的企业级能力和RAD web应用开发的便利。
Rails的代码生成就不用说了,RoR做到的,它都能做到,下面看看他的扩充代码
import com.jasonrudolph.ejb3example.entity.EmployeeBean
添加一个web事件
和RoR相比,Grail对对象关联的处理十分灵活
def showComputersByEmployee = {
render(view:'list', model:[ computerBeanList:
ComputerBean.findAllByEmployeeBean(EmployeeBean.get(params.id)) ])
}
保存web提交
def update = {
def computerBean = ComputerBean.get( params.id )
if(computerBean) {
if (computerBean.employeeBean) {
computerBean.employeeBean.computers.remove(computerBean)
}
computerBean.properties = params
def employeeBean = EmployeeBean.get(params.employeeId)
employeeBean.computers.add(computerBean)
computerBean.employeeBean = employeeBean
if(computerBean.save()) {
redirect(action:show,id:computerBean.id)
}
else {
render(view:'edit',model:[computerBean:computerBean])
}
}
else {
flash.message = "ComputerBean not found with id ${params.id}"
redirect(action:edit,id:params.id)
}
}
验证规则
这是Grails的另一个特色
constraints = {
networkId(length:6..8,blank:false,unique:true)
firstName(maxLength:20,blank:false)
lastName(maxLength:20,blank:false)
startDate(nullable:false)
}
查找事件
def showSearchResults = {
render(view:'list', model:[ employeeBeanList:
EmployeeBean.findAllByLastNameLike("%" + params.lastName + "%") ])
}
高级查找
def showSearchResults = {
def criteria = EmployeeBean.createCriteria()
def results = criteria {
or {
ilike("networkId", "%" + params.networkId + "%")
and {
eq("firstName", params.firstName)
eq("lastName", params.lastName)
}
}
}
render(view:'list', model:[ employeeBeanList: results.adaptee ])
}
分享到:
相关推荐
Grails+ZK文档,Grails+ZK文档,Grails+ZK文档,Grails+ZK文档
通过阅读《Grails+groovy 完整参考手册.docx》,你可以更深入地了解这两个技术,包括它们的原理、最佳实践以及实际应用中的案例。无论你是初学者还是有经验的开发者,这份手册都将是你学习和提升技能的宝贵资源。
grails+Xfire webservice
Grails+Apache構築手順 apache配置手順 tomcat配置手順
- **定义Domain Model**:通过`grails create-domain-class`命令快速生成对应的领域模型类。 - **创建Controller**:使用`grails create-controller`生成控制器代码,处理HTTP请求和响应。 - **构建View**:编写GSP...
《Grails + Spring Security 权限控制》 在Web应用开发中,权限控制是不可或缺的一环,它确保了用户只能访问他们被授权的功能和数据。本文将深入探讨如何在Grails框架中集成Spring Security,实现高效且灵活的权限...
《Grails 定义性指南》第二版:深入探索 Grails 框架的核心概念与实践 《Grails 定义性指南》第二版由 Graeme Rocher 和 Jeff Brown 联合撰写,该书是关于 Grails 框架的一本权威指南。Grails 是一个基于 Groovy 的...
在 Grails 应用中集成 MongoDB,通常会使用 Grails 的 MongoDB 插件,该插件提供 ORM(对象关系映射)服务,将 Grails 的 Domain 类映射到 MongoDB 的集合上。MongoDB 的主要优点在于其高性能、横向扩展能力和灵活的...
【标题】"Grails + AngularJS" 是一个结合了两种技术的项目,旨在展示如何将Grails后端框架与AngularJS前端框架有效地整合在一起。这个项目可能是为了教学目的或者为开发者提供一个参考模板,帮助他们理解如何在实际...
工具115 Proyecto para la MateriaTecnologíasOrientadas a Objetos,desarrollado en Grails + Oracle
**Grails登录系统详解** Grails是一个基于Java的开源Web应用程序框架,它使用Groovy语言进行开发,提供了高效、简洁的编程模型。在Grails中实现用户登录功能是构建任何Web应用的基础,它确保了数据的安全性和用户...
《Grails技术详解:中文文档与Fckeditor-0.9.5插件解析》 Grails,作为一款基于Groovy语言的开源Web应用框架,以其高效、简洁的特性深受开发者喜爱。它集成了许多Java EE的功能,同时简化了开发流程,使得开发人员...
《Grails 入门指南》是一本专门为初学者设计的教程,旨在帮助新手快速掌握Grails框架的基础知识和实际应用。Grails是一个基于Groovy语言的全栈式、开源的Web应用框架,它以简化开发流程和提高生产力为目标,特别适合...
1. **模型(Model)**: 在Grails中,模型通常由Domain Classes表示,它们是持久化的实体,与数据库表对应。Domain Classes使用Groovy的元编程特性,如属性验证和动态方法,提供数据验证和业务逻辑。 2. **视图...
创建新项目时,你可以利用配置好的Grails外部工具执行`create-domain-class`等命令,快速生成领域模型类。在Eclipse中,Grails项目的结构和管理将得到很好的支持,包括源代码编辑、构建、测试和调试。 注意,尽管...
例如,`grails create-app` 创建新应用,`generate-controller` 生成控制器,`generate-domain-class` 生成领域类。 四、GORM(Grails Object Relational Mapping) GORM是Grails的持久化框架,它实现了Hibernate...
《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...
通过本篇文章,我们深入了解了 Grails 的基本概念和操作流程,包括如何创建应用、定义 Domain 类、创建 Controller 以及进行简单的单元测试等。这些基础知识对于初学者来说至关重要,能够帮助他们快速上手 Grails ...