从Trails和Firebird开始

作者:Chris
翻译:ShiningRay @ Nirvana Studio

0. 前言

在Trails的首页上有一段Trails的指导视频,它比本文说得更为详细。你可以看看它,另外根据Firebird设置一节中的内容,设置一下和Firebird相关的东西。

1. 什么是Trails?

Trails是一个领域驱动开发框架,它使用了Hibernate、Spring和Tapestry。其中,Hibernate 被用作数据访问层,Tapestry用来给用户显示数据。而Spring 则是把Hibernate和Tapestry连接在一起。

Trails自带了几乎所以必需的jar文件——你只需要安装一下Firebird的数据库驱动,它可以在 http://firebirdsql.sf.net上下载。

1.1 Hibernate

Hibernate是一个O/RM工具。O/RM的意思是:对象关系映射。O/RM可以让你把 java 对象映射到后台数据库中。Hibernate使用了XDoclet来指明映射信息所需的信息,以便在数据库中存储复杂的对象。而XDoclet使用了javadoc注释来告诉Hibernate如何映射对象。例如:

[code lang=”java”]/**
* @hibernate.class table=”PERSON”
*/

public class Person {
}
[/code]

这段代码会告诉Hibernate要将一个指定的对象(在这里是Person)映射到PERSON表。

Hibernate 的主页是:www.hibernate.org.

1.2 Tapestry

Tapestry 是(简而言之)一个Web框架。更确切地说,Taspetry是一个基于组件的Web框架,它将表示和逻辑清晰地分离开来了。

在Tapestry中,一个页面和一个.html文件相关,这个文件负责这个页面的外观,和一个Java类,它负责对.html文件提供数据,还有一个.
page或者是一个.jwc文件(这由你是要作为一个真正的页面还是一个单独的组件),这两个负责把前两个层次连接起来。

组件是通过ognl语言来访问的,形式如:

jwcid 指明了使用的组件——这里是一个PageLink,它是一个HTML表现中的<a></a>标签的一个组件。page属性指明了你要链接的页面的名称。

Tapestry 的主页在jakarta.apache.org/tapestry

2. 安装Trails。

首先从trails.dev.java.net下载Trails.

当前的版本是0.5.1。先把下载的文件解压缩(在https://trails.dev.java.net上有一个很棒的演示,教你如何利用Trails来写应用程序)。

解压缩trails,并进入新建的文件夹。更改build.properties文件以匹配你的tomcat路径,
然后做以下这些事情:

通过运行下面的指令来创建trail.jar(我在我的机器上必须这样做)

3. 写一个新的应用程序

3.1 创建一个新的trail应用:

这是在问你,把工程的根目录放在哪里(在MacOS X上我输入的是/Users/chris/Desktop/projects——Windows用户可能要输入诸如c:\path\to\new\project的路径)

输入工程名称

然后,一个目录包括所有必须的jar文件就被创建好了。

3.2 启动

3.3 创建一个新的 “Java Project”

  • 输入工程名称
  • 选择 “Create project at external location”(在外部位置创建工程) 并指向新创建的文件夹。

  • 点击 “next”
  • 点击 “add folders”
  • 选择 “src”,然后点击OK

  • 点击 “finish”

新创建的工程就会被导入到Eclipse中。

4. 设置

4.1 改变tomcat的主目录

  • 打开Eclipse中的open build.properties 文件并将tomcat.home改称你的tomcat的目录。

4.2 更改数据库驱动:

  • 打开文件 context/WEB-INF/hibernate.properties 并把其中的设置改为::

4.3 在主机上创建一个新数据库(这里是127.0.0.1)

并且在 FIREBIRD_HOME/aliases.conf 中添加一个别名,这样写:

在生产系统中,你还要为以后要连接的用户更改用户名和密码 :-)

4.4 安装Firebird数据库驱动

firebird.sf.net下载Firebird的JCA-JDBC驱动,解压缩并把jar文件安装到CATALINE_HOME/common/lib下(详细内容参见 JayBird FAQ)。

5. 开始编码

5.1 创建一个领域对象(Domain Object)

领域对象可以简单地说成是POJO(Plain Old Java Objects),它是Hibernate用来在数据库中存放数据的。

  • 在Eclipse中选择src文件夹并点击 File -> New -> Class(文件->新建->类)
  • 输入一个包名(de.test.data)
  • 在Name输入框中输入类名:Person
  • 点击 “finish”

成功新建并打开了一个类。

5.2 告诉Hibernate要使用的表格:

把表格名称作为XDoclet的hibernate.classabove标签添加到类的说明中。XDoclet任务以 @ 符号开始,后面跟着一个名空间(在这里是hibernate)和一个动作,指明要做什么(更多信息参见hibernate.sf.net)。

XDoclet标签 @hibernate.class table=”PERSON” 将告诉Hibernate把这个对象中的数据存储在一个叫做PERSON的表中。

表格的名称无需和类名相匹配——你也可以指定一个MY_PERSON作为名称 :-)。

5.3 创建属性:

  • 先输入以下内容:

  • 在“Outline”(大纲)中选择PersonID并右键点击它。
  • 选择Source -> Generate Getters and Setters
  • 两个都选中并点击OK

现在已经有了getter和setter例程,而且已经添加了注释。然后我们添加下面的注释:

这将告诉Hibernate使用表格的PERSON_ID列来存储表格的主键,同时通过使用一个生成器来自动新建这个字段的值。
键将由SQ_PERSON_ID生成器来生成。

在大纲中选择name并且右键点击它(选择 source
-> generate getters and setters,选择Name和SurName然后点OK :-) )

这次,我们不再需要主键——我们仅仅需要一个字段来存放姓名。所以我们继续并添加以下javadoc注释:

[code lang=”java”] /**
* @hibernate.property column=”LAST_NAME” not-null=”true”
*/
public String getName() {
return Name;
}
[/code]

以及surname属性

由名称属性而来的getter上的列是必须出现的,因为我们要覆盖默认的行为。Hibernate会假设一个叫“NAME”的字段——但这在Firebird中是一个关键字,所以我们必须另外选择一个名称。

记住:Hibernate标记必须总是设置在getter上——而不是setter。

如果需要,我们可以通过在Hibernate的XDoclet标记中添加not-null=”true”属性来设置一个null值——默认值为false。

5.4 创建查询表

现在提示有一个错误——是LSalutation。

这时把你的鼠标移到LSaltutation上并且按下Ctrl+1(在Apple Macintosh上你要按Command + 1)。然后会出现以下对话框: 

输入要创建的文件的包名,点击“finish”,然后做以下几步动作:

  • 给他一个ID
  • 个它一个名称
  • 生成getter和setter
  • 并且指明给表格设置的类名,以及ID和属性字段

现在,又是另一个对象可以被Hibernate映射了。对于Hibernate,这已经可以用了,但对于Trails,还少个东西:

  • 一个 equals() 和一个 toString() 方法

toString() 方法是用来在列表视图中能正确显示属性,而equals方法是用来标示对象的。所以只要添加以下代码到LSalutation类中:

返回到Person.java中并且为Saltuation属性创建getter和setter。

由于我们要给salutations使用另一个表中的数据,所以这里我们要用另一个属性。所以这里我们要用一个多对一的关系。也就是,我们要把javadoc注释改成:

现在Hibernate已经了解如何引用salutation类了。

这就是我们要写的全部代码了。 :-)

6. 构建应用程序:

打开build.xml文件,右件点击war目标并选择 ant -> build

这将调用ant来构建.war文件(Trails的指南说,使用deploy目标可以部署程序——这不能在我的机器上运行)。然后我把project.war文件复制到TOMCAT_HOME/webapps中去。

7. 访问应用程序:

打开浏览器并输入127.0.0.1:8080/project_name

现在,享受一下浏览和输入数据的乐趣吧 :-)

无任何担保——Chris

发表评论

电子邮件地址不会被公开。 必填项已用*标注