【发布时间】:2011-08-06 12:09:46
【问题描述】:
让几个单独的 DAO 类 OrderDAO、ProductDAO 和 CustomerDAO 在数据库中存储/检索数据并共享单个实例 DataSource(数据库连接工厂)。
为了创建DataSource 实例并将其插入DAOs,我们通常使用Spring DI。现在我想在没有任何 DI 框架的情况下在 Scala 中做到这一点。
我已阅读有关 cake pattern 的信息,看来我应该执行以下操作:
trait DatabaseContext { val dataSource:Datasource }
trait OrderDAO {this:DatabaseContext =>
... // use dataSource of DatabaseContext
}
trait ProductDAO {this:DatabaseContext =>
... // use dataSource of DatabaseContext
}
object DAOImpl extends OrderDAO with ProductDAO with DatabaseContext {
val dataSource = ... // init the data source
}
我是否正确理解蛋糕图案?
我可以使用蛋糕模式以不同的方式实现这些DAOs 吗?
它提供了什么是像 Spring 这样的 DI 框架没有的?
如何创建单独的 OrderDAOImpl 和 ProductDAOImpl 对象共享同一个 DataSource 实例而不是一个大的 DAOImpl?
【问题讨论】:
-
我简要地阅读了有关蛋糕图案的信息,但也没有看到令人兴奋的地方。它似乎比现有的 DI 容器复杂得多。
-
您是否喜欢它与问题并不真正相关。 “我错过了什么”是一个非常弱的问题。也许最好问“这提供了什么而 X 没有?”,这是一个明确的问题。
-
@丹尼尔。谢谢。我已经改写了这个问题。
标签: scala dependency-injection dao