我开始将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,或者更好地保持图层隔离,这是一个好的设计吗?不包括这种方法?
谢谢!
答案 0 :(得分:1)
如果您理解正确,您就会询问有关活动记录模式的信息。任何模式,它有其优点和缺点,你可以在网上找到更多关于它的信息。以下是其中一些:
http://www.mehdi-khalili.com/orm-anti-patterns-part-1-active-record
在Play2项目中,我首先使用该模式,主要是因为Ebean的支持。但是,由于我需要更多的逻辑来持久化某些模型,因此扩展它变得很麻烦。最后,我把所有东西分开了:单独的服务,单独的模型,单独的DAO。这也帮助我轻松切换存储库层实现(最后我可以更自由地试验Spring Data JPA,Hibernate等)