【发布时间】:2011-04-12 14:37:41
【问题描述】:
让我的应用程序包含业务类Order、Product、Customer 等,我想在数据库中/从数据库中存储/检索它们。
通常,我们为此使用DAO 模式。也就是说,我们为每个业务类定义了一个DAO 接口和实现:OrderDAO、ProductDAO 等。现在我想使用 type class 模式:
trait DAO[T] {
def create(t:T)
... // other CRUD operations
}
...
// DAO implementations for specific business objects
implicit object OrderDAO extends DAO[Order] {
def create(o:Order) {...}
... // other CRUD operations
}
...
// create a business object in the database
def create[T](t:T)(implicit dao:DAO[T]) {dao.create(t)}
现在我的问题是所有DAOs 都使用DataSource 实例(数据库连接工厂),因此我无法将DAOs 定义为objects。我应该创建一个 DataSource 的单例实例,并在初始化时将其传递给所有 DAOs。
假设我们有一个创建DataSource的函数:
def dataSource():DataSource = {...}
您将如何使用 type classes 实现 DAOs ?
【问题讨论】: