Пусть мое приложение содержит бизнес-классы Order
, Product
, Customer
и т. Д., И я хотел бы сохранить / извлечь их в / из базы данных.
Обычно для этой цели мы используем шаблон DAO
. То есть мы определяем DAO
интерфейс и реализацию для каждого бизнес-класса: OrderDAO
, ProductDAO
и т. Д. Теперь я хотел бы использовать шаблон типа pattern:
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 = {...}
Как бы вы реализовали
DAOs
с
классами типов ?