【问题标题】:Active Record vs JRuby vs JDBCActive Record vs JRuby vs JDBC
【发布时间】:2014-02-12 16:46:25
【问题描述】:

我是 Ruby on rails 的新手,我最近创建了一个连接到 sqlite3 数据库的小型会计应用程序。

目前,我仍在开发中,我可以使用控制器端的 activerecord 命令保存新数据或更新数据库中的现有记录。

但我的问题是关于 JRuby 的 JDBC:

我也是 Java 新手,据我了解,JRuby 完全由 Java 代码组成,并且在 JVM 上运行。而且如果用 C 语言编写,有些宝石将无法工作。

如果我开始使用 JRuby 而不是 MRI,会有什么不同?我是否仍会使用活动记录命令来处理数据库中的记录?

如果我使用 JRuby 并创建一个新应用程序,那么 JDBC 适配器的工作方式是否与现有的 gem(如 sqlite3)完全一样,可以将应用程序连接到数据库?

或者我只需要编写 JDBC 适配器而不是控制器?

我对它的工作原理有点困惑,非常感谢您提供一些信息。提前谢谢你!

编辑:

我的意思是,目前我的应用程序正在使用 Ruby on Rails,并且我正在控制器中使用命令,例如当您更新现有记录时:

@variable = [Table_name].find(:id)

然后

@variable.update_attributes(params[:submit])

此命令将使用 RoR 更新记录,但如果在 JRuby 中使用 Rails,这将如何工作?语法一样吗?

【问题讨论】:

  • 欢迎来到 StackOverflow!如果您有两个框架的代码示例,您的问题将得到更多关注。我会更容易指出差异。
  • 哦,我还没有开始使用 JRuby,因为我还在研究它。我只是想知道两者之间的区别,比如访问数据库时的语法。是一样的吗?
  • 不知道他们为什么将这个问题标记为不清楚,很明显你很困惑,但这并不意味着我们不能帮助你。切换到 JRuby 不会改变您的 ruby​​ 代码,除了缺少 gem。 Rails 在 JRuby 上运行良好,这意味着它的整个基础架构都可以正常运行:activerecord 也是如此。您不应该关心 db 适配器,我认为 Rails 现在支持所有数据库没有很多问题,即使在 jruby 上也是如此(如果不是,请检查)。您可能对 ruby​​ C gems 有疑问,但在这种情况下,您将根本无法使用它们(因此您不会拥有它们)。评论很短
  • 谢谢。所以大部分语法都是一样的。但是我能问一下 JDBC 适配器是干什么用的吗?我需要创建一个在特定数据库上使用吗?
  • 它允许您连接到 JDBC 可以连接的任何数据库类型(很多):github.com/jruby/activerecord-jdbc-adapter 无论如何,一旦将其包含在应用程序中,它就是透明的。

标签: ruby-on-rails ruby activerecord jdbc jruby


【解决方案1】:

JDBC 是用于连接数据库的 Java API 和驱动程序。

Rails 使用 ActiveRecord 作为应用程序和数据库之间的 ORM 层。

ActiveRecord 然后将使用指定的驱动程序来生成 SQL 语句和迁移。

从应用程序端调用总是相同的,就像你提到的@variable = [Table_name].find(:id)

差异将出现在日志中生成的 SQL 语句和生成的迁移以适合指定的数据库驱动程序。

【讨论】:

  • 谢谢希瑟姆。虽然我想问一下,您认为两者的优缺点是什么?
  • 您将根据数据库服务器同时使用这两种方法。例如,您可以将 jdbc-sql-server 用于 SQLServer 或 jdbc/sqlite 用于 SQLite
  • 但是所有命令仍然在应用程序中进行编码,对吧?所有这些都在控制器/模型中,而不是在 JDBC 适配器中?
  • 您唯一需要编码的是使用 ActiveRecord 语法的查询和可能需要针对某些服务器进行调整的迁移。 JDBC 将出现在幕后。另请阅读stackoverflow.com/questions/15973929/…
猜你喜欢
  • 2016-07-21
  • 2010-10-08
  • 2011-09-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 2014-09-19
相关资源
最近更新 更多