【问题标题】:what good orm api will work well with scala or erlang什么好的 orm api 可以很好地与 scala 或 erlang 一起使用
【发布时间】:2023-03-30 02:27:01
【问题描述】:

我正在考虑使用 Scala 编程,但我真的很担心我的基于 ORM 的应用程序会变成什么样子。我目前使用 hibernate 作为我的 ORM,我发现它是一个非常可靠的工具。我想知道是否有任何高效但用scala编写的ORM工具,或者休眠与它无缝工作。我不想再次开始编写无休止的 sql 查询(就像 JDBC 时代一样)。我对erlang也有同样的想法。 erlang有没有好的orm?我可以将 erlang 与其他 DBMS 一起使用,例如 oracle 和 mysql 与 ORM

【问题讨论】:

    标签: orm scala erlang


    【解决方案1】:

    BossDBChicagoBoss 的一部分,但它可以单独使用

    【讨论】:

      【解决方案2】:

      看看Circumflex。用 Scala 为 Scala 编写的 ORM。

      【讨论】:

        【解决方案3】:

        如果您正在考虑 Erlang,CouchDB 可能是您的最佳选择。我讨厌不得不使用具有不可变数据结构的函数式语言处理关系数据库。

        【讨论】:

        • 您能解释一下为什么您不喜欢从具有不可变 DS 的功能性语言中处理关系数据库,那么还有什么替代方案?
        • 请详细说明。除非我遗漏了什么,否则在不可变结构中加载 SQL 语句的结果本质上是不可能的。毕竟,FP 如何将原始文件中的信息加载到它们的结构中?他们做得很好,而且做得很好,所以通过扩展,这与关系数据相同。更新和插入只不过是发送不可变元组 - 指示更改的增量(或整个集合,以适当的为准) - 回数据库。
        【解决方案4】:

        Erlang 不是面向对象的,所以您为什么要尝试硬塞一些像 ORM 库这样的老生常谈的东西,所有这些都是因为关系数据库和 OO 之间存在严重的阻抗不匹配。 Erlang 也会出现同样的不匹配。 Mnesia 更像是一个分层数据库,该模型与 Erlang 之类的函数式语言配合得很好。 ORM 库并不是万能的,尤其是对于 Erlang。

        【讨论】:

        • 当我听说 Erlang 和数据库时,我最常遇到的名字是 Mnesia。我还遇到了另一个有趣的产品,ErlyDB,一个 Erlang DB 包装器生成器。
        • 你说 Erlang 不是 OO 是有道理的。我真正想知道的是,一旦我开始使用 erlang,我是否仍然需要在我的 erlang 函数中生成 sql 查询。在 ORM 中,像 hibernate 对我的主要吸引力在于,我实际上可以一次生成所有数据库表和 java 对象。在 erlang 中有什么可以做到这一点的吗??
        【解决方案5】:

        一旦您习惯了稍有不同的语法,Hibernate 将在 scala 中轻松运行。

        从 java 切换到 scala 的一大好处是,最初您可以开始使用 scala 作为更简洁的 java 版本,并逐渐转向更惯用的 scala。

        使用 hibernate,您将被限制在使用可变对象的传统 ORM 方法中,这些对象在需要持久化时跟踪修改。

        更实用的方法可能涉及不可变对象,但似乎没有任何专门针对 scala 的 ORM 实现。 scalaz (http://code.google.com/p/scalaz/) 包含一些包装 JDBC 的功能,但在这个阶段有一些相当稀疏的文档。

        lift Web 开发框架 (http://liftweb.net/) 包含一个 orm,但我不确定单独使用它有多容易。

        【讨论】:

          【解决方案6】:

          我不知道有任何用 Scala 编写的 ORM。 M. Odersky 的书Scala 中的编程有一些代码,用于本质上是 DSL 包装的 JDBC,但这并不适合您。

          但正如 Brian 所说,Scala 在很大程度上与 Java 兼容,因此您可以(大部分)只使用来自 Scala 的 Java 库。

          这里有一篇文章说“通常,Hibernate 和 Scala 很容易协同工作”。不过后面有一个“但是……”。 http://www.artima.com/forums/flat.jsp?forum=276&thread=222229 发现的一个特殊问题是 Scala 尚未完全支持注释(这可能已在最近的 2.8 升级中得到修复)。

          不过,总体而言,如果这些人能够成功,那么您也应该能够管理好。

          委婉地说,我对 Erlang 不太乐观。 Erlang 不是一种 JVM 语言,与 Scala 不同,它与 Java 有很大不同。但老实说,由于我不是 Erlang 程序员,所以我能说的就这些了。

          【讨论】:

            【解决方案7】:

            为什么不利用可以使用标准Java libraries with Scala,从而使用Hibernate within Scala这一事实呢?

            【讨论】:

            • 好的.. 好建议.. 但是我听说 scala 将提供的所有并发性如何?这会与现有的休眠架构很好地融合吗?在 erlang 中有这样的东西吗??
            • Scala 并发(我理解)是基于 VM 线程的,因此它与 Hibernate 的线程模型应该没有什么不同。我承认这是我的猜测。
            • Hibernate 与 Scala 配合得非常好(确保使用注解)。与一个半熟的 Scala ORM 漂浮在周围,作为一个被烧毁的人说话,你使用 hibernate 好多了
            猜你喜欢
            • 2010-11-11
            • 2012-02-24
            • 2012-03-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多