簡體   English   中英

在Scala中使用Slick(在Playframwork 2.3中)

[英]Using Slick with Scala (with Playframwork 2.3)

從設計的角度來看,對於中型應用程序,是否可以在業務邏輯層中使用表對象? 當我說好時,我的意思是說這樣做確實不錯。

這里有很多軟件模式,例如存儲庫模式,活動記錄模式等。我只是不確定它們是否適合諸如Scala之類的語言。

以我的口味,它甚至比存儲庫或活動記錄模式更好。 使用活動記錄,您將不得不向對象本身添加magic ,很難將它們分離得不是很透明。 使用存儲庫模式,您將最終得到許多小型存儲庫,因為每個實體本身都非常笨拙,其所有功能都是以分離的方式包裝對數據庫的調用,主要是為了能夠在模擬或測試中進行測試。 -內存數據庫。

但是,當您在服務層(或業務邏輯層)中使用表查詢時,並沒有犧牲可測試性(或虱子耦合)。 數據庫功能本身在scala.slick.driver.JdbcProfile中進行了抽象,因此您無需進行其他抽象即可將其分解出來。

當然,最好在表定義附近對所有使用一次以上的查詢進行分組,然后將它們導入到您的服務中,但這並不完全是一個存儲庫,只是一堆可組合的查詢。

希望這可以幫助。

如果您決定直接在業務/服務層中使用Slick TableTableQuery對象,則這是一種合法的模式。 無論如何,Slick會抽象出低級的db代碼。 使用Slick API看起來與使用常規Scala API並沒有太大不同,因此在使用Slick時不應有使用記錄,存儲庫或任何其他傳統模式的理由。

編寫Queries我發現使用查詢擴展隱式類很有用。 您可以在此處此處找到有關此樣式的一些詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM