我开始了一个涉及 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/