Download - Slick - The Structured Way
![Page 1: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/1.jpg)
SlickThe Structured Way
![Page 2: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/2.jpg)
YENNICK? YANNICK? JANNICK?
Reactive Applications ConsultantCertified Typesafe “Fast Track to Scala” trainer
![Page 3: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/3.jpg)
WHY SLICK?
Option(Anorm).orElse(Hibernate).orElse(Slick)
Pure ScalaImmutable data structuresDB agnostic codeType safety
![Page 4: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/4.jpg)
TALK MOTIVATION
![Page 5: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/5.jpg)
MEAT OF THE TALK
![Page 6: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/6.jpg)
ESSENTIALS
Build queries with ScalaLifted embedding
Query result result rows
ID TITLE ID FIRSTNAME LASTNAME
1 “Scala” 10 Yennick Trevels
1 “Scala” 11 Eric Loots
2 “Slick” 12 Filip Maelbrancke
![Page 7: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/7.jpg)
IMPORTS
Database specific
Database agnostic import use Play-Slick plugin
![Page 8: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/8.jpg)
SESSION SCOPE
![Page 9: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/9.jpg)
TRANSACTION SCOPE
![Page 10: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/10.jpg)
SAMPLE DATABASE
MEETING
DOCUMENT ATTENDEE_LINK
ATTENDEE
ID … MEETING_ID
ATTENDEE_ID
ID … MEETING_ID
ID …
ID …
![Page 11: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/11.jpg)
LEVEL 1: MAPPING TABLES
![Page 12: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/12.jpg)
TABLE MAPPING: MEETING
![Page 13: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/13.jpg)
TABLE MAPPING: MEETING
![Page 14: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/14.jpg)
TABLE MAPPING: LINK TABLE
![Page 15: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/15.jpg)
LEVEL 2: BASIC QUERIES
![Page 16: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/16.jpg)
FILTER STATEMENTS
Slick
SQL
=== instead of ==
![Page 17: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/17.jpg)
FILTER STATEMENTS
Slick
BracketsPut || or && at end of line
↵
![Page 18: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/18.jpg)
SORTING
Slick
SQL
![Page 19: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/19.jpg)
EXISTS
Slick
SQL
![Page 20: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/20.jpg)
DEFINING THE RESULT
Slick
SQL
Result
![Page 21: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/21.jpg)
DEFINING THE RESULT
Slick
SQL
Result
![Page 22: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/22.jpg)
DEFINING THE RESULT
Slickmeetings.list List[Meeting]meetings.first Meeting or NoSuchElementExceptionmeetings.firstOption Option[Meeting]
![Page 23: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/23.jpg)
LEVEL 3: ADVANCED QUERIES
![Page 24: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/24.jpg)
INNER JOIN
Slick
SQL
Result
![Page 25: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/25.jpg)
INNER JOIN (RESULT MAPPING)
Slick
Result
![Page 26: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/26.jpg)
OUTER JOINS (THE PROBLEM)
Slick
![Page 27: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/27.jpg)
OUTER JOINS (THE PROBLEM)
ID TITLE ID MEETING_ID ATTENDEE_ID
1 “Scala” NULL NULL NULL
2 “Slick” 10 2 20
3 “Slick” 11 2 21
ID TITLE
1 “Scala”
2 “Slick”
ID MEETING_ID
ATTENDEE_ID
10 2 20
11 2 21
Left Join
Ref: http://www.slideshare.net/skillsmatter/patterns-for-slick-database-applications
![Page 28: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/28.jpg)
OUTER JOINS
Slick
Result
![Page 29: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/29.jpg)
OUTER JOINS (RESULT TRANSF.)
Slick
![Page 30: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/30.jpg)
THE ? FUNCTION
Solution expected somewhere this year
![Page 31: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/31.jpg)
LEVEL 4: INSERT/UPDATE/DELETE
![Page 32: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/32.jpg)
INSERT
Slick
SQL
![Page 33: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/33.jpg)
UPDATE
Slick
SQL
![Page 34: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/34.jpg)
DELETE
Slick
SQL
![Page 35: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/35.jpg)
LEVEL 5: SLICK + PLAY
![Page 36: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/36.jpg)
APPLICATION.CONF
![Page 37: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/37.jpg)
DATABASE AGNOSTIC IMPORTS
![Page 38: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/38.jpg)
DB WRAPPER
![Page 39: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/39.jpg)
LEVEL 6: INTEGRATION TESTING
![Page 40: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/40.jpg)
TABLE CREATION
Using Play-Slick plugin classes
![Page 41: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/41.jpg)
IN-MEMORY DATABASE CONFIG
![Page 42: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/42.jpg)
TEST DATA SETUP
Just use Slick…
![Page 43: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/43.jpg)
CONCLUSION
![Page 44: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/44.jpg)
THOUGHTS ON SLICK
+ Lightweight+ Level of control+ Production ready
- Documentation- Generated Queries (readability)
![Page 45: Slick - The Structured Way](https://reader038.vdocuments.net/reader038/viewer/2022102815/554f5640b4c905524c8b51b6/html5/thumbnails/45.jpg)
DevelopmentCoachingTraining
Hello Scala seminar June 25th 2014
Fast Track to Scala October 09th 2014
Fast Track to Akka with Scala November 04th 2014
CONTACT US