我正在考虑使用scala编程,但我真的很关心基于ORM的应用程序会变成什么样。我目前使用hibernate作为我的ORM,我发现它是一个非常可靠的工具。我想知道是否有任何ORM工具有效但用scala编写,或者hibernate将无缝地与它一起工作。我不想再开始编写无休止的SQL查询(比如JDBC的日子)。关于二郎,我也有同样的想法。对于erlang来说,那里有一个很棒的人吗?我可以使用erlang与其他DBMS,如oracle和mysql与ORM
答案 0 :(得分:3)
为什么不利用您可以使用标准Java libraries with Scala的事实,从而使用Hibernate within Scala?
答案 1 :(得分:3)
我不知道任何用Scala编写的ORM。 M. Odersky的书 Scala中的编程有一些代码用于本质上是一个包装JDBC的DSL,但这并不适合你。
但正如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有很大不同,与Scala不同。但说实话,这就是我所说的关于这个主题的所有内容,因为我不是Erlang程序员。
答案 2 :(得分:3)
Erlang不是面向对象的,所以你为什么要尝试像ORM库那样把hacky作为hacky,所有这些都是因为关系数据库和OO之间存在严重的阻抗不匹配。 Erlang也存在同样的不匹配。 Mnesia更像是一个分层数据库,该模型适用于像Erlang这样的函数式语言。 ORM库并不是最终的全部,尤其不适用于Erlang。
答案 3 :(得分:2)
看看Circumflex。用Scala为Scala编写的ORM。
答案 4 :(得分:0)
一旦你习惯了稍微不同的语法,Hibernate就可以毫不费力地使用scala。
从java切换到scala的一大好处是,最初你可以开始使用scala作为一个更简洁的java版本,并逐渐转向scala的更惯用的使用。
使用hibernate,你将被限制在传统的ORM方法中,即使用可变对象来跟踪需要持久化的修改。
更具功能性的方法可能涉及不可变对象,但似乎没有专门针对scala的任何ORM实现。 scalaz(http://code.google.com/p/scalaz/)包含一些包装JDBC的功能,但在此阶段有一些相当稀疏的文档。
电梯网络开发框架(http://liftweb.net/)包含一个orm,但我不确定它是多么容易被孤立使用。
答案 5 :(得分:0)
如果您正在考虑使用Erlang,CouchDB可能就是您的选择。我会讨厌使用不可变数据结构的函数式语言处理关系数据库。
答案 6 :(得分:0)
BossDB中有ChicagoBoss,但它可以单独使用