我从 playframework 上的 Slick(和 Scala)开始。我的项目由 .scala 文件构成,其中包含域概念的所有类和对象。
package models
class Folder(val id: Option[Long], var name: String, val childrens:Set)
object Folder{
val folders = new db.Folders
def get(id: Long)(implicit s: Session): Option[Folder] = {
Query(users).where(_.id === id).firstOption.map { r: db.Row =>
new Folder(r.id, r.name, Set.empty]) // TODO load childrens for folder
}
}
}
// Attempt to segregate and maybe restrict the persistence code
package db {
case class Row(id: Option[Long], name: String)
class Folders extends Table[Row]("folders") {
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name", O.NotNull)
def * = id.? ~ name <> (map _, unmap _)
// ...
}
}
是否有一些 Scala 构造可以将内部包的可见性限制为Folder
仅对对象的可见性?
谢谢