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

时间:2014-03-24 08:22:55

标签: 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方法获得findByUser DAO。

我的问题是:在orders中使用User方法调用此DAO方法,从而使系统更加OO,或者更好地保持图层隔离,这是一个好的设计吗?不包括这种方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您理解正确,您就会询问有关活动记录模式的信息。任何模式,它有其优点和缺点,你可以在网上找到更多关于它的信息。以下是其中一些:

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等)