scala - 模型作为与 DAO 交互的 Scala 案例类?

标签 scala models slick

我开始了一个涉及 Scala 案例类作为模型的设计,我想知道一个设计决策。

假设我们有两个模型,一个 User模型和 Order模型。 Order模型引用 User模型作为外键。

case class User(id: UserId, [Other fields...], password: String)
case class Order(id: OrderId, [Other fields...], userId: UserId)

然后,给定这个设计,我们将有一个 Orders带有方法的 DAO findByUser方法。

我的问题是:拥有 orders 是否是好的设计? User 中的方法调用此 DAO 方法,从而使系统更加面向对象,还是保持层隔离而不包含此方法更好?

谢谢!

最佳答案

如果您理解正确,您就是在询问 Active Record 模式。与任何模式一样,它都有其优点和缺点,您可以在网上找到有关它的更多信息。这里是其中的一些:

http://www.mehdi-khalili.com/orm-anti-patterns-part-1-active-record

https://softwareengineering.stackexchange.com/questions/70291/what-are-the-drawbacks-to-the-activerecord-pattern

Active Record Design Pattern?

在 Play2 项目中,我首先使用了模式,主要是因为 Ebean 支持。但是,由于我需要更多的逻辑来持久化某些模型,因此扩展它变得很麻烦。最后,我把一切都分开了:单独的服务、单独的模型、单独的 DAO。这也帮助我轻松地在存储库层实现之间切换(最后我可以更自由地试验 Spring Data JPA、Hibernate 等)

关于scala - 模型作为与 DAO 交互的 Scala 案例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22604221/

相关文章:

scala - Spark 集成测试的 Hive 配置

java - 在 Scala 中使用 Java 语言环境会报错 : object is not a value

scala - 在Scala中避免while循环有什么好处吗?

ruby-on-rails - (rails) 按网站上的点赞数排序

slick - 我如何将 scalaz-streams 连接到 react 性流(如reactive-streams.org)

java - 我正在寻找一些帮助,以使用 Play 框架将 Polymer 与服务器端 Scala/java 结合使用

mysql - Sequelize模型原型(prototype)显示添加功能,但执行时失败

python - 带有数据库查询的 Django charfield 模型

scala - Slick 表中的动态表名覆盖

sql - 优化 Slick 生成的 SQL 查询