Ruby和 rail是非常簡潔的
在嘗試了RnR之後
· Ruby是一種非常有力量的語言
· 搭建的材料是被動代碼生成
· 關系數據庫中心
· MVC
Java的問題
在Java的世界中
Java生產力
解決生產力的一個方法是使用驅動模型
目標
這是所需要應用程序的主要界面
圖一
基本上
· 列出所有准則的清單
· 創造新准則和編輯現有的准則
· 為某個類別指定合適的准則
Ruby on Rails第一次沖刺
使用RnR的第一步是創建一個新的項目
$ rails cookbook
現在你必須創建以及配置你的數據庫
現在是時間輸入你的第一行代碼了
drop table if exists recipes;
drop table if exists categories;
create table categories (
id int not null auto_increment
name varchar(
primary key(id)
) engine=InnoDB;
create table recipes (
id int not null auto_increment
category_id int not null
title varchar(
description varchar(
date date null
instructions text null
constraint fk_recipes_categories foreign key
(category_id) references categories(id)
primary key(id)
) engine=InnoDB;
顯然你需要在數據庫上面執行這些語句
最後的步驟是生成Ruby代碼
$ ruby script\generate scaffold recipe recipe
$ ruby script\generate scaffold category category
現在
很少量的工作
Rails結果
這是應用程序的結果
圖二
圖三
圖四
少量的工作
JPA on OX的第一次沖刺
繼續使用OpenXava
$ ant CreateNewProject
現在你必須創建以及配置你的數據庫
現在是時間輸入你的第一步代碼了
Recipe
package okbook
import java
import javax
import org
@Entity
@View(members=
public class Recipe {
@Id @GeneratedValue @Hidden
private Integer id;
@Required @Column(length=
private String title;
@Column(length=
private String description;
private Date date;
@Stereotype(
private String instructions;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this
}
public String getInstructions() {
return instructions;
}
public void setInstructions(String instructions) {
this
}
}
Category
package okbook
import java
import javax
import org
@Entity
public class Category {
@Id @GeneratedValue @Hidden
private Integer id;
@Required @Column(length=
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this
}
public String getName() {
return name;
}
public void setName(String name) {
this
}
}
最後一個步驟是生成數據庫圖表
$ ant updateSchema
現在
少量的工作
OpenXava結果
這是應用程序的結果
圖五
圖六
注意
少量的工作
觀察這裡RnR 與 OX之間的差別
控制器
Rails引起basic CRUD的控制邏輯
圖七
另一方面
Rails使用合成碼
你可以在OpenXava wiki上面學到更多的OX控制器知識
增加關聯
為了規范在Ruby中從類別增加關聯
圖八
以及在recipe
圖九
相當簡單
cookbook
增加如下代碼
<p><labelfor=
<%= select(
結果是
圖十
在這個環節
@ManyToOne(optional=false) @DescriptionsList
private Category category;
and in Recipe
@OneToMany(mappedBy=
private Collection
圖十一
你有一個為修改產生的鏈接或者從這裡創建新類別
不增加任何輔助編碼
圖十二
在這裡
在這一塊
精確的基礎資料
Ruby on Rails指導的下一個步驟是為一種特性生成基礎資料
修改以及更新的方法是增加如下代碼行
@recipe
The equivalent in OX is adding the @DefaultValueCalculator annotation in model:
@DefaultValueCalculator(CurrentDateCalculator
private Date date;
用一種更為公開的方法獲得一樣的結果 在這裡
RnR的相關文章中提到
結論
Ruby on Rails 和 OpenXava之間最主要的差別是RnR是 MVC框架
另一個大的不同點是RnR使用被動代碼生成方式;這就是說
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19267.html