grails_Grails是否适合Java企业? 你打赌!

Grails框架因其快速构建Web应用程序的能力而受到关注,它不仅简化了域模型的创建,还提供了脚手架功能,使得与数据的交互变得简单。本文探讨了Grails在Java企业环境中的适用性,包括其在支持真实UI开发、管理界面和超大型领域模型方面的优势,以及如何利用插件增强功能。

grails

对Grails的大多数介绍都集中于在新的数据库架构之上快速构建新的Web应用程序。 域的建模(映射到数据库表的类)和脚手架HTML用户界面都使入门变得非常容易。 但是,除了快速入门之外,它还能提供什么? 在Java企业中,这是一个严肃的选择吗? 答案很明确,是“是”,我将带您了解框架的一些功能,使其适合于这种环境。

为什么要搭棚架?

创建域模型时,您希望能够通过用户界面与之交互,从而添加,更改和删除数据。 这是脚手架提供的。 给定一个域类,例如:

class Book {
    String title
    String author

    static constraints = {
        title blank: false
        author blank: false
    }

您只需添加具有scaffold静态属性的匹配控制器类即可生成CRUD Web用户界面:

class BookController {
    static scaffold = Book
}

当应用程序运行时,您可以通过一组标准的URL创建,查看,修改和删除Book实例。

很少有真正的Web应用程序基于脚手架,那么它真正提供了什么价值? 只是a头吗? 一点也不。 不要低估快速启动和运行有效应用程序的价值。 甚至除此之外,脚手架在多种情况下都具有巨大的价值。

支持真实UI的开发

在构建最终将成为Web应用程序的用户界面的过程中,在很多情况下,您都希望与数据进行完全交互,特别是要测试正在使用的某些功能。 如果启用了脚手架UI,则可以从浏览器中将数据与心脏内容进行交互。 对于典型的开发人员而言,这比处理数据库客户端工具和SQL脚本要有效得多。

一旦初始应用程序准备就绪,禁用脚手架非常容易,因此,这似乎并不会导致您最终用脚手架页面污染可爱的用户界面。 或者,考虑第二种情况。

管理界面

在应用程序或网站上线后,您想修复几次数据? 通常,Web应用程序不允许您执行此操作,因此您可能必须发布新版本或(恐怖!)直接在数据库中修改数据。 有一个安全的管理员UI来为您提供对域模型的完全访问权限,这会更好吗?

您可以使用诸如Spring Security插件之类的方法轻松地保护脚手架控制器,那么为什么不保留它们并仅确保只有管理员才能访问页面? 如果您无法通过主界面执行所需的操作,则它是一种理想的后备选项。

超大型领域模型

如果您有50个或一百个甚至更多个域类怎么办? 为所有这些创建Web应用程序需要大量的工作。 脚手架可以在这里提供帮助,并可以构成整个应用程序的基础。 您不仅限于标准的外观:脚手架使用可以轻松自定义的模板。 只需更改CSS或替换整个HTML,甚至甚至可以使用您选择JavaScript库。 由你决定。

说到大型域模型,如果手动创建模型,那将很耗时。 幸运的是,您在这里有一些选择。

现有数据库

GORM(Grails对象关系映射)的默认实现基于Hibernate,这允许一些有趣的技术。 例如,许多Java企业都有基于Hibernate或JPA的现有域模型。 他们为什么会接受使用替代语法重新创建该模型的任何要求? 听起来像是不必要的努力。

幸运的是,Grails可以使用现有模型,只要它具有XML Hibernate映射或使用JPA批注即可。 有关如何执行此操作的详细信息,请参见其他地方 ,但基本上,您可以将模型作为Java源代码或JAR包含在Grails项目中。 创建一个Hibernate配置文件; 并在单独的文件中添加GORM约束。 然后,您可以完全访问Grails提供的所有出色功能,例如动态查找器,Where查询,“错误”属性等。

如果您没有现有模型,或者您真的想拥有完整的标准GORM模型怎么办? 对于这种情况,我们有Reverse Engineer插件 ,它将从现有数据库模式生成GORM模型。 这不是灵丹妙药,该模型无疑需要进行调整,但是如果您有许多数据库表,则可以节省很多时间。 自定义现有文件比从头开始创建它们要容易得多。

可以为单个Web应用程序创建此类域模型,但是在企业中,多个应用程序将使用相同的数据库和架构的可能性就很高。 如果您可以将模型与约束一起打包,或者添加一些粗粒度的服务以使其使用起来更加方便,那就太好了。

利用插件

Java的标准包装单位是JAR。 当然,Grails也可以使用这些,但是简单的类集合会错过Grails提供的丰富约定和工件类型。 例如,Grails如何知道特定的类是标记库还是控制器?

这就是插入插件的地方。在最基本的级别上,它们按工件类型打包功能,以便您可以在多个应用程序之间共享该功能。 将插件安装在应用程序中之后,就可以使用其所有域类,服务,标记库等,就好像应用程序已定义它们本身一样。

想象一下将插件插入应用程序并能够立即使用定义明确的服务与现有数据库进行交互。 该插件甚至可能包含用于查看域模型各部分的标准UI元素-只需从您自己的视图中使用它们即可。 插件机制不仅用于提供诸如Spring Security集成或MongoDB支持之类的功能。 它也可以帮助您将应用程序分解为灵活,可重用的部分。 插件的一大优点是它们就像Grails应用程序一样,因此您甚至不必学习任何新知识即可使用它们。

结语

Grails背后的主要原则之一是使Java开发人员易于创建Web应用程序,同时提供与现有系统集成的灵活性。 GORM体现了这一原则,即您可以与现有域模型集成,而不会牺牲动态查找器,Where查询和脚手架的便利性。

我只在这里刮过表面。 例如,您可以对NoSQL存储使用相同的GORM API,从而可以立即访问它们。 但是,当您需要访问其特殊功能时,您始终可以使用其本机界面。 在GORM之外,Grails基于Spring构建,并在需要时允许您使用该框架的全部功能。

Grails是在Java企业中构建Web应用程序的好方法,您可以通过使用它进行快速原型设计来开始使用。 您需要的工具和集成点就在其中,然后您可以在探索插件生态系统中获得一些乐趣,以获取诸如简单的访问控制,作业计划之类的功能!

作者简介:Peter是Grails的长期用户,目前是该项目的提交者,并且是VMware部门SpringSource的Grails Advocate的正式代表。 他还是与Glen Smith合作的《 Grails in Action》合著者。


本文最初发表在Java Tech Journal – Groovy Universe中。 在此处查找更多与Groovy相关的文章。


翻译自: https://jaxenter.com/is-grails-suitable-for-the-java-enterprise-you-bet-104725.html

grails

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值