我负责重建一个每天约有250,000名访客的网站.我们想使用Scala,但它与Spring(在一些小的情况下)和Hibernate(如果你想使用我们这样做的scala集合,这里有一个主要且非常烦人的不匹配)不能很好地工作.
应用程序本身将有大约40-50个表.
除了Hibernate之外,是否有一个与Scala一起使用的ORM,并且与Hibernate一样高效且可靠?它是否也具有相同的功能,或者如果我们不使用Hibernate,我们是否会遇到漏洞抽象?
对于我们来说,使用更新并且似乎没有很多行业支持的框架将是一个很大的风险......同时,在使用Scala时,Hibernate是一个真正的编程方法.
1)Java Collection < - > Scala Collection绝对是痛苦的.还有更多的样板和废话要写.
2)IDE不会自动导入JavaConversions和Java接口......所以我们需要手动完成.优化IDEA中的进口将破坏所有手动工作.
3)在域对象和dao类中始终来回转换也会产生性能成本.
4)更不用说需要大量的铸造,这会产生像罪一样难看的代码.
我实际上很乐意编写我自己的专为scala量身定制的orm,但显然这实际上超出了我们项目的范围.
那么最好的方法是什么?
你有没有考虑过Lift Framework?它有一个非常好的持久性模块 - Lift Record(在你正在搜索的Scala中实现ActiveRecord概念).
此外,如果你决定使用NOSQL(它可以比传统的RDBMS更好地满足你的高吞吐量需求),Lift有Mongo DB,Redis和Couch的模块.
另一个经过验证的Scala ORM解决方案是JPA.您可以在Scala中自由使用JPA注释.
这两种解决方案都非常可靠并且有企业支持(据我所知).
PS值得一提 - 如今,Lift Framework是Scala Web框架的一种行业标准.它有着良好的声誉,并且已经有一些好的入门书籍.
看看Circumflex.用Scala编写的一个ORM,用于Scala.