知识大全 Java 与Ruby on Rails对接

Posted 模型

篇首语:我的知识和成功,全是靠勤奋学习取得的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java 与Ruby on Rails对接相关的知识,希望对你有一定的参考价值。

Java 与Ruby on Rails对接  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

Ruby 和rail 回归框架

  Ruby和 rail是非常简洁的 很容易 很丰富 我无法避免的连续看到以及听到以上这样的说法 比如说 Bill Walton 写的Rail回顾上关于Ruby的文章提到 如果我告诉你当你使用Rail开发一个Web应用程序可以比你使用一种特定的Java框架开发要快至少十倍的时候 你会怎么想?

  在尝试了RnR之后 我发现这就是一个伴随旧技术的非常经典的框架

  · Ruby是一种非常有力量的语言 就像Smalltalk 我选择静态语言

  · 搭建的材料是被动代码生成 就像是IDE wizards或者AppFuse 我选择动态代码生成 或者是更好的——根本就不需要代码生成

  · 关系数据库中心 编码发生器和ActiveRecord在表中会被首先想到 然后是在类别中被想到 我选择一种仅仅面向对象的 就像是Hibernate JPA 甚至是ODBMS

  · MVC 我正在寻找比旧式MVC框架更新很好的工具

  Java的问题 Java开发者

  在Java的世界中 生产力是文化问题 而不是技术问题 这就是所谓的这不是Java的错 而是我们的错 我们作为Java开发者需要设计出非常漂亮的体系 以适用于任何地方的GoF模式 使得任何工具都是可再度使用的 把三层架构放到我们所有的系统中以及使用web服务器 我们不是在寻找最直接的方法 所以我们就没办法发现最直接的方法 但是Java 是一种非常简单的语言 使得我们很轻易就可以接近软件开发

  Java生产力 其它的方法

  解决生产力的一个方法是使用驱动模型 这就是模型环节的开发 仅仅是我们应用程序中的模型环节 就可以使用框架来生产所有的应用程序 MDA OpenXava Trails NakedObjects Roma框架和JMatter都是采用的这种方式

  目标

  这是所需要应用程序的主要界面

  

  图一

  基本上 应用程序推测需要做三件事情

  · 列出所有准则的清单

  · 创造新准则和编辑现有的准则

  · 为某个类别指定合适的准则

  Ruby on Rails第一次冲刺

  使用RnR的第一步是创建一个新的项目 在命令行你需要输入

  $ rails cookbook

  现在你必须创建以及配置你的数据库

  现在是时间输入你的第一行代码了 在这个例子中使用SQL代码

         drop table if exists recipes;

  drop table if exists categories;

  create table categories (

  id int not null auto_increment

  name varchar( ) not null default

  primary  key(id)

  ) engine=InnoDB;

  create table recipes (

  id int not null auto_increment

  category_id int not null

  title varchar( ) not null default

  description varchar( ) null

  date date null

  instructions text null

  constraint fk_recipes_categories foreign key

  (category_id) references categories(id)

  primary key(id)

  ) engine=InnoDB;

  显然你需要在数据库上面执行这些语句

  

  最后的步骤是生成Ruby代码 你只需要执行O S框架的下一个命令

  $ ruby script\\generate scaffold recipe recipe

  $ ruby script\\generate scaffold category category

  现在 你已经拥有RnR应用程序的第一个版本 并且准备运行

  很少量的工作 一个简单的 创建表格 然后执行向导 让我们看看结果

  Rails结果

  这是应用程序的结果

  

  图二

  

  图三

  

  图四

  

  少量的工作 少量的结果

  JPA on OX的第一次冲刺

  继续使用OpenXava 使用OpenXava的第一步是创建新的项目

  $ ant CreateNewProject xml Dproject=CookBook

  现在你必须创建以及配置你的数据库

  现在是时间输入你的第一步代码了 在这个例子中使用Java代码

         Recipe java:

  package okbook model;

  import java util *;

  import javax persistence *;

  import openxava annotations *;

  @Entity

  @View(members= title; description; date; instructions )

  public class Recipe

  @Id @GeneratedValue @Hidden

  private Integer id;

  @Required @Column(length= )

  private String title;

  @Column(length= )

  private String description;

  private Date date;

  @Stereotype( HTML_TEXT )

  private String instructions;

  public Integer getId()

  return id;

  

  public void setId(Integer id)

  this id = id;

  

  public String getTitle()

  return title;

  

  public void setTitle(String title)

  this title = title;

  

  public String getDescription()

  return description;

  

  public void setDescription(String description)

  this description = description;

  

  public Date getDate()

  return date;

  

  public void setDate(Date date)

  this date = date;

  

  public String getInstructions()

  return instructions;

  

  public void setInstructions(String instructions)

  this instructions = instructions;

  

  

  Category java:

  package okbook model;

  import java util *;

  import javax persistence *;

  import openxava annotations *;

  @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 id = id;

  

  public String getName()

  return name;

  

  public void setName(String name)

  this name = name;

  

  

  

  最后一个步骤是生成数据库图表 你只需要执行项目中的一个小目标

  $ ant updateSchema

  现在 你已经拥有OpenXava应用程序的第一个版本 并且准备运行

  少量的工作 简单的POJO 以及执行 更新图表 让我们看看结果

  OpenXava结果

  这是应用程序的结果

  

  图五

  

  图六

  

  注意 用户可以创建更新 删除 从列表生成PDF 将列表输入到excel 每一列的命令 大型结果和过滤数据的支持分页 而且你可以直接部署 不需要代码 仅仅是执行一个小目标 JSR 入口上的应用程序 以及OpenXava的look & feel能够适用于入口的look & feel 这就是一个应用程序准备产出的第一步

  少量的工作 完美的结果

  观察这里RnR 与 OX之间的差别 一个冷静的观点是在RnR中 你先输入表 而在OpenXava中先输入类别

  控制器

  Rails引起basic CRUD的控制逻辑 你在下面可以看到

  

  图七

  另一方面 OX不会为CRUD生成任何代码 OpenXava仅有一个属性代码 可以执行CRUD和打印 将自动化配置给所有的实体 你可以书写你自己的属性CRUD逻辑 或者你可以为一个特有的实体书写详细逻辑 但是你不会为每一个实体设置控制代码 使用这种方法 你需要维护少量的代码 并且你可以改变CRUD独立单元的逻辑

  Rails使用合成码 OX使用属性代码

  你可以在OpenXava wiki上面学到更多的OX控制器知识

  增加关联

  为了规范在Ruby中从类别增加关联 你需要在category rb中书写如下代码

  

  图八

  

  以及在recipe rb中

  

  图九

  相当简单 但是 你要做更多的工作 你必须编译

  cookbook \\app\\views\\recipe\\_form r

  增加如下代码

         <p><labelfor= recipe_category_id >Category</label><br/>

  <%= select( recipe category_id Category find(:llect|c| [c name c id] ) %></p>:

  结果是

  

  图十

  在这个环节 OpenXava中 你不得不在Category java中使用JPA规定关联

        @ManyToOne(optional=false) @DescriptionsList

  private Category category;

  and in Recipe java:

  @OneToMany(mappedBy= category )

  private Collection recipes;

  而且你不需要接触任何类似HTML代码 应用程序将会显示如下

  

  图十一

  你有一个为修改产生的链接或者从这里创建新类别

  不增加任何辅助编码 如果使用者使用类别单元 他将获得每一个类别中准则的收集 如下所示

  

  图十二

  在这里 RnR应用程序还是不具备这种特性 你需要书写一些Ruby 和HTML代码来实现一样的结果

  在这一块 RnR 和 OX的主要差别是 在OX中你不需要书写任何HTML类似的代码 事实上你连用户界面代码都根本不需要书写

  精确的基础资料

  Ruby on Rails指导的下一个步骤是为一种特性生成基础资料 在RnR中你不得不编译控制编码从而达到这个目的 让我们开看看

  修改以及更新的方法是增加如下代码行

         @recipe date = Time now

  The equivalent in OX is adding the @DefaultValueCalculator annotation in model:

  @DefaultValueCalculator(CurrentDateCalculator class)

  private Date date;

  用一种更为公开的方法获得一样的结果

  在这里 尽管RnR中在控制器上放置的代码 OX中统计基础资料的代码 为了确认以及业务逻辑 一般来说是放在模型上 OX促进从控制器转移业务逻辑到模型上

  RnR的相关文章中提到 我改良模型文件 所以我需要重新启动我们的web服务器 尽管使用Eclipse WTP 我只需要按一下Ctrl 加上B 在浏览器上点击刷新以便于看见OpenXava应用程序上面模型的变化

  结论

  Ruby on Rails 和 OpenXava之间最主要的差别是RnR是 MVC框架 你不得不书写模型和控制器 OX是模型驱动框架 你只需要书写模型 结果就是更少的代码 更好的程序

cha138/Article/program/Java/JSP/201311/19267

相关参考

知识大全 由Ruby on Rails想到的[2]

反思Spring:由RubyonRails想到的[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 由Ruby on Rails想到的[1]

反思Spring:由RubyonRails想到的[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Groovy on rails使用

Groovyonrails使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  开发环境  下载b

知识大全 跨越边界: REST on Rails

跨越边界:RESTonRails  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  过去的年间一个趋

知识大全 Rails 开发与 Java 编程的比较

Rails开发与Java编程的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  年月日&nbs

知识大全 如何控制Ruby应用程序的大小

如何控制Ruby应用程序的大小  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Rails使得开发

知识大全 Ruby能否成为第二个Java

Ruby能否成为第二个Java?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一直以来Ruby

知识大全 新Eclipse插件—为Java 、PHP和Rails的应用添加云托管功能

新Eclipse插件—为Java、PHP和Rails的应用添加云托管功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 Java、.Net、PHP、Ruby优劣势概览

Java、.Net、PHP、Ruby优劣势概览  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最

知识大全 利用Ruby简化你的Java测试(进阶篇)

利用Ruby简化你的Java测试(进阶篇)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文是