Play框架2.5.x Scala巧妙实现风格 [英] Play Framework 2.5.x Scala Slick implementation style

查看:0
本文介绍了Play框架2.5.x Scala巧妙实现风格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个哲学问题。

几年来,我一直是Java Play框架的一个非常愉快的用户。现在,我正试图深入研究Scala和函数式编程。在基于Java的Play中,我一直使用eBean,因此根据Play文档,我扩展了eBean模型类并实现了我自己的模型。在每个模型中,我声明了一个Finder类型的静态变量,以便调用查询。所有这些都已记录在案,并且运行良好。

然而,在基于Scala的Play(v2.5.x)中,没有太多关于持久层的文档。好的,我知道有一个关于Play Slick的推荐,因为它使用了函数式编程的思想。我对此感到有点兴奋,但几乎没有关于如何使用它的文档。我找到了如何启用SLICK,如何配置数据源和数据库服务器,以及如何将数据库注入到控制器中的方法。还有一个非常小的示例,说明如何在数据库上调用简单查询。

问题是:如何实际使用Slick?我研究了一些第三方教程和博客,似乎有多种方法。

1)如何定义模型?似乎我应该使用案例类来定义模型本身。那么我应该定义类扩展表来定义列及其属性吗?

2)项目结构是什么?我应该为每个型号创建新的Scala文件吗?按照Java的约定,我应该这样做,但有时我会在一个Scala文件中看到所有模型(就像在Python Django中一样)。我认为单独的文件更好。

3)我应该创建DAO来操作模型吗?或者我应该创建像服务这样的东西?代码可能是非常相同的。我想问的是这个项目的结构。

提前感谢您的建议

推荐答案

我对SLICK也有同样的问题,并提出了一个适合我的解决方案。看一下这个示例项目:

https://github.com/nemoo/play-slick3-example

大多数其他示例项目都太过基础。因此,我创建了一个范围更广的项目,类似于我在真实游戏代码中发现的内容。我测试了各种方法,包括服务。最后,我发现很难使用额外的层,因为我从来不知道将代码放在哪里。您可以看到过去提交的思维过程:)

让我引用自述文件:存储库处理与域聚合的交互。所有公共方法都公开为Futures。在内部,在某些情况下,我们需要将各种查询组合到一个块中,该块在单个事务中执行。在这种情况下,各个查询返回DBIO查询对象。单个公共方法运行这些查询并向客户端公开一个Future。

这篇关于Play框架2.5.x Scala巧妙实现风格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆