通過一段時(shí)間的學(xué)習(xí)和了解以及前面幾篇關(guān)于Slick的討論后對(duì)Slick這個(gè)函數(shù)式數(shù)據(jù)庫編程工具有了些具體的了解?;仡櫸覍W(xué)習(xí)Slick的目的,產(chǎn)生了許多想法,覺著應(yīng)該從實(shí)際的工作應(yīng)用角度把我對(duì)Slick目前能夠達(dá)到的目的以及在現(xiàn)有功能優(yōu)勢(shì)和特點(diǎn)下如何進(jìn)一步改進(jìn)才能正真符合IT系統(tǒng)對(duì)數(shù)據(jù)庫程序編程和運(yùn)行效率的要求。想通過這篇博客把想法提出來跟大家分享一下,看看是否能夠引起大家的共鳴,為我下一步的工作制定一個(gè)方向性的框架。

首先談?wù)凷lick的特點(diǎn):主體方面Slick為函數(shù)式編程模式帶來了SQL編程,可以把數(shù)據(jù)庫表當(dāng)作scala語言中的集合來對(duì)待。除了能實(shí)現(xiàn)FP的函數(shù)組合外又避免了嵌入SQL語句式的數(shù)據(jù)庫編程,而且也實(shí)現(xiàn)了類型安全(type safe),可以由編譯器(compiler)在編譯時(shí)來捕捉語法錯(cuò)誤。另一方面與同是基于jdbc之上的通用ORM庫比較,Slick可以實(shí)現(xiàn)更高效率的關(guān)系表數(shù)據(jù)提取。

Slick實(shí)現(xiàn)函數(shù)組合部分主要分兩個(gè)層次:一是Query組合:即把多個(gè)Query組成一個(gè)Query。我看主要是為了把幾個(gè)數(shù)據(jù)源(table)join成一個(gè)源頭,如下:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 1   val q11 = for { 2     c <- coffees.filter(_.price >  100.0) 3     s <- suppliers.filter(_.id === c.supID) 4   } yield (c.id, c.name, s.name) 5   q11.result.statements.head 6   //res4: String = select x2."COF_ID", x2."COF_NAME", x3."SUP_NAME" from "COFFEES" x2, "SUPPLIERS" x3 where (x2."COF_PRICE"&
        
		

網(wǎng)友評(píng)論