在學習play-slick並設置最終保存到PostgreSQL的模型類時,我看到了這種模式(代碼如下)。有一個簡單的case類充當模型,然後是擴展處理關係映射的Table的東西。減少案例級模型的Slick定義中的樣板文件
case class Cat(name: String, color: String)
/* Table mapping
*/
class CatsTable(tag: Tag) extends Table[Cat](tag, "CAT") {
def name = column[String]("name", O.PrimaryKey)
def color = column[String]("color", O.NotNull)
def * = (name, color) <> (Cat.tupled, Cat.unapply _)
}
這令我在很多常見的情況是一堆不必要的樣板,但我只是學習,所以我不知道我在這裏失蹤。有沒有更簡單的方法來開始case class Cat
,並最終有一個對象,我可以用來在數據庫中的CRUD實例的貓?例如。似乎沒有必要指定String
類型的屬性最終應該是column[String]
,依此類推。在其他框架中,我可能不得不添加一個註釋或者某個東西來表明我想成爲主鍵,還是不能爲空,但是我不會寫一個單獨的映射。通過手寫這些映射,我主要是花費更多時間,並有機會以微妙的方式搞砸它,否則就是簡單的情況。
我最想要的是case class Cat
開始,它灑魔術框架灰塵,並獲得了CatsTable
合理的默認設置,我可以重寫/根據需要定製。
當我在此搜索文檔時,通常會返回schema code generation,但這似乎是倒退;我不想從現有的/填充的RDBMS生成表映射,我想從頭開始。
位遲了,但另一個庫是'http:// getquill.io /',它需要比Slick更少的樣板,並且還提供了jdbc或真正的異步db調用選擇。截至2017年6月,感覺有點不太好 - 例如我目前使用Slick和Quill的組合,因爲我無法讓後者調用存儲過程。 – thund