如何思考Slick?

时间:2016-05-21 10:19:56

标签: scala slick slick-3.0

我在Slick中苦苦挣扎,我是最近的Scala / Slick采用者。我已经习惯了Hibernate和/或Rails ActiveRecord,但我在加入大量表格时遇到了一些困难。

我有以下课程模式。

case class User(id: UUID, ..., profile: UserProfile)
case class UserProfile(id: UUID, ..., address: Address)
case class Address(id: UUID, ...)

我正在尝试将其作为域模型,并使持久层只需获取并连接表以返回域单个对象。

  1. 是光滑的做法吗?
  2. 无论如何都要缓存查询结果而不是不断查询数据库?
  3. Lib有帮助吗?
  4. 加入这三张桌子的最佳方式是什么? 1通过单独的DAO或内部联接查询每个人并使用Scala的groupBy?
  5. 对不起,如果这是一个“新生儿”问题。我只想弄清楚如何“思考光滑”。

2 个答案:

答案 0 :(得分:2)

  1. 没有正确的方法。这取决于你需要对模型做什么......有正确的关系数据库模型建模方法,但你已经知道了。
  2. Slick没有使用任何缓存,请参阅here。但是,如果您使用Play Framework,它提供CacheApi,但我没有经验或建议。但是,对于查询,您可以拥有一些"缓存",例如compiled queries
  3. 可能是的,对于简单的情况,简单的表等。但你也可以使用Hibernate,这更老,更可靠。
  4. 当我还是Scala / Slick初学者的时候,我也被它困住了,所以我写了blog关于那个(它在Slick' s 3rd party docs也是,是的,我是& #39;吹牛:p)。还有一个简单的伴侣项目。
  5. 了解纯SQL,它的连接等在使用Slick时有很大帮助。 例如,外连接(左/右)顺序是否重要,以及其他有趣的问题。

答案 1 :(得分:0)

前段时间我写了一篇关于play + slick的小教程。检查它,看它是否有帮助http://pedrorijo.com/blog/play-slick/

我通常有:

case class CaseClassA(field1, field2, caseClassB_Id)
case class CaseClassB(field3, field4)

但也许有更好的方法