Как реализовать DAO в Scala?

Я хотел бы реализовать DAO в Scala следующим образом:

trait DAO[PK,-T,-Q] {

   // T is a "value object", PK is a primary key, and Q is query parameters.

   def create(t:T):Unit
   def update(t:T):Unit
   def remove(pk:PK):Unit
   def find(query:Q):Seq[T]
}

Имеет ли смысл? Разве это не выглядит "слишком Java"? Как бы вы проектировали/внедряли DAO в Scala?

Ответы