面向Java开发人员的Grails on Oracle

上一篇 / 下一篇  2007-01-18 12:06:00 / 个人分类:学习笔记

如果您并不熟悉 Ruby on Rails,那么切记它与 Java 没有任何关系,它是一个基于 Ruby 的框架。Ruby on Rails 确实很吸引人、功能强大以及……但作为 Java 开发人员,我希望使用 Java(或等效语言)执行相同操作,从而利用我在 J2EE 中的投资。我还希望能够部署和管理使用 Oracle Enterprise Manager Application Server Control 等工具以这种方式开发的应用程序。

  一种新框架的开发中已经利用了 Ruby on Rails 所遵循的“按照惯例进行编码”范例:Grails。Grails 将 Groovy 用作基础语言,因此它在 JVM 上运行并可以利用任何现有的 Java API。

  如果您是 Java 开发人员,便会发现使用此框架加快 Web 应用程序的开发非常有意义。如果您不是 Java 开发人员但需要更快速地开发和部署 Web 应用程序,那么 Grails 也是一个很棒的工具。

  在本文中,我将使用 Richard 在他撰写文章时使用的同一应用程序/数据库模式来开发我的第一个 Grails 应用程序。密切关注!

  什么是 Groovy?什么是 Grails?

  Groovy 是一种利用其他语言(如 Ruby、Jython 和 Smalltalk)中的特性的动态语言。Groovy 在 Java VM 上运行,并使任何现有的 Java 对象(以及所有 API)可用于 Groovy。Groovy 当前遵循 JSR-241 中的标准;您可以在 Groovy 网站及其项目主管 (Guillaume Laforge) 的网志中了解有关该语言的详细信息。

  Grails 之于 Groovy 相当于 Ruby on Rails 之于 Ruby。(该名称最初为“Groovy On Rails”,现在已改为“Grails”以避免混淆/竞争。)与 Ruby on Rails 一样,Grails 用于创建 CRUD(创建、读取、更新、删除)Web 应用程序。您可以在 Grails 网站及其项目主管 (Graeme Rocher) 的网志中了解有关 Grail 的详细信息。

  下面,我们将深入了解一下该示例应用程序。

  示例:产品目录

  第 1 步:设置 Oracle 数据库

  如果您尚未设置 Richard 文章中的模式和表,则只需创建下列对象:

CREATE TABLE comics (
id NUMBER(10) NOT NULL,
title VARCHAR2(60),
issue NUMBER(4),
publisher VARCHAR2(60),
PRIMARY KEY (id)
);
CREATE SEQUENCE comics_seq;

  我根据该文章在 ruby 模式中创建了该表。

  第 2 步:安装 Grails

  Grails 安装非常简单,安装指南中有述。基本步骤:

  •   下载二进制文件(我使用了 Grails 0.2)
  •   设置不同的环境变量(GRAILS_HOME、JAVA_HOME、PATH),我使用了 Java 5。

  完成!

第 3 步:创建 Web 应用程序

  现在您已经安装了本产品,下一步是创建应用程序本身。

  创建应用程序。create-app 命令使用模板(利用占位府表示应用程序的不同组件,如配置、MVC、库等)创建了完整的项目。在命令行界面中输入以下命令:

> grails create-app
....
.....
create-app:
[input] Enter application name:
comics_catalog
.....

  您将看到,Grails 频繁使用 Ant。create-app 命令将请求您输入应用程序名称;例如,输入 comics_catalog。

  创建的应用程序包含一个目录列表,从而使您可以使用 Groovy、Grails 以及其他 Web 组件开始构建该应用程序。

  添加业务逻辑和模型:域类。Grails 和 Ruby on Rails 之间的最大差别之一是,使用前者,应用程序开发的主要组件不是表,而是域类。域类是业务应用程序的核心,它包含应用程序的状态和行为。

  因此,下一步是为 comics 创建一个域类。为此,您只需转到项目的主目录(例如,cd comics_catalog)并运行 create-domain-class。

> cd comics_catalog
> grails create-domain-class
....
create-domain-class:
[input] Enter domain class name:
comics
....

  当命令请求您输入类名时,请输入“comics”。Grails 使用的命名惯例与 Ruby on Rails 的不同,因此,您需要使用同一名称来命名类和要在其上映射对象的表。持久性层使用 GROM(Grails 对象关系映射)创建,后者利用了 JBoss Hibernate。

  注:在本示例中,我们利用了一个现有的数据库对象并基于它来创建域类。Grails 通常使用另一种方法(即所有内容由应用程序驱动)— 您首先创建域类,然后 Grails 将创建其他数据库对象。

  Comics 类不包含任何有关映射本身的信息,因此您必须在该域类中创建不同的属性。您将在域类中开始使用 Groovy。域类位于以下位置:

  ./comics_catalog/grails-app/domain/Comics.groovy

  请注意,默认情况下 Grails 使用两个属性创建该类:id 和 version。将它们保存到适当的位置,并添加标题、期号和出版商。

class Comics {
@Property Long id
@Property Long version

// new properties for the Comics class
@Property String title
@Property Long issue
@Property String publisher

String toString() { "${this.class.name} :$id" }
}

  现在,您已经设置了所有内容并准备运行 magic 命令,该命令将创建不同的屏幕和流。

  从 domain 类中创建不同的屏幕。您现在可以运行 generate-all 命令来创建所有不同的屏幕。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-22  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 2729
  • 日志数: 90
  • 建立时间: 2006-11-13
  • 更新时间: 2008-04-07

RSS订阅

Open Toolbar