我正在Scala Playframework中编写后端restful api服务器,使用Slick进行数据库访问。
因为我的数据库模式一直在不断发展,所以我决定通过slick-codegen生成Slick帮助程序类。 Users表映射到此Scala案例类
case class UserRow(userId: Long, username: String, passwordHash: String,
passwordSalt: String, email: String, firstName: String, ...)
现在我的数据访问包含2层:服务& DAO
DAO非常简单,允许从数据库中插入,删除等UserRow< / p>
现在我的问题开始于应用程序控制器调用的服务层设计。
如果显示(id)方法将返回UserRow,我将显示用户的私有salt和密码哈希。另一方面,这种方法可以让我轻松地将它们包装进JSON中。
另一种方法是show方法(仅用作示例)返回包含数据的元组,但这对json传输来说不方便。
另外,我可以创建一个额外的User类,但从长远来看会产生大量的样板
处理这种情况的正确方法是什么?我将来在哪里可以找到推荐和智能模式?
答案 0 :(得分:1)
似乎有三个需要表示的概念 -
所有这三个都应该单独创建。这将确保您的实施从长远来看是分离和清洁的。这并不意味着您将有3 *个数量的表对象浮动。每个表都有1行案例类,但是你的模型应该抽象出来,并且可能代表许多表的逻辑。 Json表示也可能因路线和/或来电者而异。