中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
在JRuby中构建Apache Derby数据库应用程序的两种方法(6)
作者:佚名 时间:2007-09-26 15:38 出处:ibmbw 责编:月夜寒箫
              摘要:在JRuby中构建Apache Derby数据库应用程序的两种方法(6)

使用 ActiveRecord 将数据插入 Derby

如果需要插入一个新雇员怎么办呢?没问题。ActiveRecord 同样使您可以轻松完成操作!创建 Employee 类的一个新实例,将属性设为所需的值,并保存它,如清单 11 所示。

清单11:插入新雇员 

            

newEmp = Employee.new

newEmp.id = 12

newEmp.name = "David Duke"

newEmp.title = "Human Resources Manager"

newEmp.office = "6 East"

newEmp.save

用 ActiveRecord 更新和删除数据

在 JDBC 中,更新和删除与插入类似,与之不同的是,对于不同的操作,ActiveRecord 有不同的语法。当需要更新数据时,有几种方法可供您选择。首先是要使用 save 方法,就像插入数据时所做的操作一样。它有插入或更新的逻辑(如有需要),还有只更新做出更改的字段的逻辑。除了 save 方法之外,ActiveRecord 还提供了 updateupdate_all 方法。update 方法使您可以更新对象而无需检索该对象。特别是,可以只更新您关注的属性而无需检索对象。这类似于通过 JDBC 执行 update 语句,其中 where 子句用于指定要更新的行 ID。update_all 方法允许您对一系列对象执行更新,而不只是对一个对象执行更新,如清单 12 所示。

清单12:对一系列对象执行更新

            

Employee.update(12, :office => "7 East")

Employee.update_all("title = 'Vice President'", "title like 'Director%'")

第一行用于更新 ID 为 12 的雇员,使其拥有一间新的办公室。第二行用于将职位为主管的人更改副总裁。正如您所见,update 方法要求使用对象的 ID,这将强制它只更新一行。

第一行用于更新 ID 为 12 的雇员,使其拥有一间新的办公室。第二行用于将职位为主管的人更改副总裁。正如您所见,update 方法要求使用对象的 ID,这将强制它只更新一行。

用 ActiveRecord 删除行同样地直观。有一种 delete 方法可使用一个 ID 或一组 ID。delete_all 方法与 update_all 方法相对应,前者将删除匹配指定条件的所有行。

使用 ActiveRecord 事务

要完成早前做出的 ActiveRecord 与 JDBC 示例的比较,添加插入 David Duke 的事务。为此,需要把 newEmp.save 行更改为清单 13 中所示的一行。

清单13:添加插入事务

            

Employee.transaction do

newEmp.save

end

如果事务包括了其他失败的代码,则 David Duke 将不会被添加到数据库中。在本例中,这是不会发生的,因为每个独立对象的保存(对于插入和更新)都被 ActiveRecord 打包在事务中。要管理多次插入、更新或删除时有必要这样做。

如果事务包括了其他失败的代码,则 David Duke 将不会被添加到数据库中。在本例中,这是不会发生的,因为每个独立对象的保存(对于插入和更新)都被 ActiveRecord 打包在事务中。要管理多次插入、更新或删除时有必要这样做。

正如您所见,ActiveRecord 易于使用。ActiveRecord-JDBC gem 的发布为在 JRuby 内使用 Derby 提供了一种很好的方法。全面讨论 ActiveRecord 超出了本教程的范围,但查看 参考资料 部分可获得一些有用的参考。

ActiveRecord 与 JDBC 相比较

决定使用哪些持久性机制取决于您的需求。如果要与现有 Java 代码库进行交互,而该代码库又与 Derby 进行通信,则应最可能使用 JDBC。如上所述,可能有一个预存在的隔离层,用于处理与数据库进行的所有通信,并且已包含并使用了那些类或软件包。如果要编写使用 Derby 的新应用程序并且不要求使用 Java 代码,则可以在 Ruby 中编写全部代码并使用 ActiveRecord 用于持久性。

您还可以编写一个新应用程序,但需要与不遵循任何 ActiveRecord 约定的传统数据库进行交互。在这种情况下,使用 Hibernate 可能比较合适。ActiveRecord 在这样的数据库上运行最佳:表中一行映射到一个对象实例。这不是说 ActiveRecord 无法处理表之间的关系。ActiveRecord 可以很好地处理一对一、一对多和多对多关系。但是,如果表中的几列映射到一个对象,其余列映射到另一个对象 —— 表示一张表有来自不同对象的字段 —— 则 ActiveRecord 不再适用。JRuby 的力量在于如果需要使用 Hibernate、iBatis 或直接使用 JDBC,则它们全都可用,因为您可以使用 Java 库。

结束语

本教程讨论了在 JRuby 内使用 Derby 作为持久性存储的各种方法。了解了如何通过 JRuby 的 include_class 和 include_package 方法在 Ruby 脚本内使用 JDBC。然后了解了在 JRuby 内使用 ActiveRecord 的新功能的知识,并获得了每种方法何时使用比较适当的一些提示。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有