내 애플리케이션에 Order
, Product
, Customer
등의 비즈니스 클래스가 포함되어 있으며 데이터베이스에 저장/가져오고 싶습니다.유형 클래스가있는 스칼라의 DAO
일반적으로이 용도로는 DAO
패턴을 사용합니다.
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
은을 사용하는 것을 : 지금은 형 클래스 패턴을 사용하고자하는 OrderDAO
, ProductDAO
등 : 그건 우리가 모든 비즈니스 클래스의 DAO
인터페이스와 구현을 정의한다 DataSource
인스턴스 (데이터베이스 연결 팩토리)이므로 DAOs
을 objects
으로 정의 할 수 없습니다. 내가 DataSource
의 싱글 톤 인스턴스를 만들고 초기화시 모두 DAOs
으로 전달해야합니다.
def dataSource():DataSource = {...}
가 어떻게
형 클래스로
DAOs
을 구현하는 것이 :
은의 우리가이
DataSource
생성하는 기능을 갖고 있다고하자?
흥미 롭습니다. 설명해 주시겠습니까? – Michael
죄송합니다. 코드에 오류가 있습니다. def가 아닌 var이어야합니다. 편집했습니다. – tonek
이러한 접근 방식을 사용하면 실제로 데이터 소스의 함수 팩토리를 보유하는 DataSources 변수에 정의 할 수 있습니다. 프로덕션 코드에서는 객체 DataSources에 정의 된 변수의 기본값을 사용할 수 있습니다. 그러나 테스트에서 원하는대로 반환하도록 변수를 다시 정의 할 수 있습니다. – tonek