【问题标题】:What is ORM as related to Ruby on Rails?与 Ruby on Rails 相关的 ORM 是什么?
【发布时间】:2010-02-03 19:46:05
【问题描述】:

什么是适用于 Rails 的 ORM,它的含义是什么?

【问题讨论】:

    标签: ruby-on-rails orm


    【解决方案1】:

    ORM 是对象关系映射器。这意味着您不必自己手动调用数据库; ORM 会为您处理。

    Ruby on Rails 使用一种称为 ActiveRecord 的方法,它非常好。

    ORM 允许您执行以下操作:

    User.find(50).contacts
    

    而不是手动编写带有 JOIN、WHERE 等的 SELECT 语句。

    【讨论】:

    • 现在我知道了,mike。还有其他 ORM 然后是活动记录吗?
    • Ruby还有其他的ORM工具(DataMapper、Sequel、Friendly等),Ruby on Rails(DrySQL)也有一些,但Active Record一般是配合Rails使用的。其他语言有很多 ORM; Hibernate 可能是最著名的。
    • 在正式的 Rails 中(“开箱即用”)这些只是 ActiveRecord。对于 Ruby,还有一些其他的 ORM(一个叫做 DataMapper,似乎受到了很多关注),但是这些其他的需要一些工作才能在 Rails 中工作
    【解决方案2】:

    ORM 代表对象关系映射。这基本上意味着 Active Record 使用行和列获取存储在数据库表中的数据,这些数据需要通过编写 SQL 语句来修改或检索(如果您使用的是 SQL 数据库),它允许您与该数据进行交互就好像它是一个普通的 Ruby 对象一样。

    示例:假设您想获取所有用户的数组,而不是编写任何用于数据库连接的代码,然后编写一些 SQL 查询(如 SELECT * FROM users)并将结果转换为数组,我只需键入 User.all Active Record 为我提供了一个充满用户对象的数组,我可以随意使用它们。

    您使用哪种类型的数据库并不重要。 Active Record 为您消除了这些数据库之间的所有差异,因此您不必考虑它。您专注于为您的应用程序编写代码,Active Record 会考虑将您连接到数据库的细节。这也意味着如果你从一个数据库切换到另一个数据库,你实际上不需要更改任何主要的应用程序代码,只需要更改一些配置文件。

    【讨论】:

      【解决方案3】:

      ORM 是对象关系映射器。这意味着您不必自己手动调用数据库; ORM 为您处理它。 Ruby on Rails 使用一种称为 ActiveRecord 的方法,它非常好。

      作为 ORM 框架的 Active Record

      Active Record 为我们提供了多种机制,其中最重要的是能够:

      > Represent models and their data.
      > Represent associations between these models.
      > Represent inheritance hierarchies through related models.
      > Validate models before they get persisted to the database.
      > Perform database operations in an object-oriented fashion.
      

      click hear

      【讨论】:

        【解决方案4】:

        ORM 的主要优势

        • 映射语言类型,例如整数、字符串、日期到数据库类型

        • 为您解析数据库输出。如果没有,您将不得不自己解析来自数据库的字节流

        • 跨数据库可移植性。 MySQL、PostgreSQL 等都扩展了 SQL 标准,因此每个扩展的语法都会略有不同。

          此外,启动连接和从输出流中读取输出的确切方式会有所不同。一个好的 ORM 允许你编写一个代码,可以在多个底层数据库上工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-14
          • 2015-08-06
          • 1970-01-01
          • 2010-09-15
          • 2010-12-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多