ScalikeJDBC
doobie
Our great sponsors
ScalikeJDBC | doobie | |
---|---|---|
4 | 12 | |
1,255 | 2,118 | |
0.2% | - | |
8.9 | 8.8 | |
1 day ago | about 15 hours ago | |
Scala | Scala | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ScalikeJDBC
-
What are the possible ways to connect with MYSQL using scala
You can also try http://scalikejdbc.org which is my personal favorite.
-
Scala 3 RDBMS Libraries
Maybe not what you're looking for but ScalikeJDBC is published for Scala 3 since version 4.0.0.
- Query DSL in Scala 3
-
From First Principles: Why Scala?
I have had poor experiences with "fancy" SQL libraries in multiple languages when I go past basic operations. This includes Slick and Quill in Scala.
I don't remember what the problems were with Slick that leave such a bad feeling when I hear its name -- that was 5 years ago -- but I had problems with Quill just last year. I was trying to use it to generate an efficient "in" query against a two column composite primary key, and nothing seemed to work. Since it uses macro magic, one of my attempts triggered an internal compiler error instead of normal compiler feedback.
I ended up dropping Quill for ScalikeJDBC:
http://scalikejdbc.org/
It seems to be less popular/active than other libraries, but it is dead simple to use, even for developers new to Scala. I write exactly the SQL I want just like I would in psql. There is little-to-no magic [1]. I think that the only slightly magical feature I use is ensure that variable interpolation into SQL ("SQLInterpolation") prevents injection attacks.
[1] It actually has capabilities to automatically map tables/columns into different structures and generate code for you, but my team doesn't use any of that. We just write SQL.
doobie
-
Grasping the concepts and getting them down to earth
Most important/known: * https://http4s.org/ - an HTTP client/server * https://github.com/typelevel/fs2 - streaming * https://github.com/tpolecat/doobie - JDBC
-
doobie map to PostGIS Point
So you need to use PGgeography scala type and import another set of implicits: https://github.com/tpolecat/doobie/blob/main/modules/postgres/src/main/scala/doobie/postgres/pgisgeographyinstances.scala
-
mod team resignation by BurntSushi · Pull Request #671 · rust-lang/team
Developer removing a library integration due to above politics
- Remove Quill Integration
-
It's unsafe to depend on Typelevel Libraries
Doobie removes Quill integration in order to make some sort of political protest. The Quill developers are harassed on Twitter.
- Why is tpolecat against ZIO?
- Removes integration with Quill, which is now part of the ZIO organization, which I will not support
-
Zio / Zionomicon : is it worth it ?
The libraries doobie and skunk are more closely associated with cats. They both use cats-effect and fs2 for implementing database connectiona and input-output operations. The doobie library is a wrapper on JDBC, and as such is compatible with many DBMS, such as MySQL, PostgreSQL, H2, Oracle... Whereas skunk is specific to PostgreSQL, and is based on using the server protocol of that database.
-
Hiding Doobie's ConnectionIO implementation detail
You may find this issue helpful. tl;dr you can easily make a Transactor with the void Strategy that just ignores the null Connection. But I’m with Rob: at that point, you’re not actually testing anything.
What are some alternatives?
Slick - Slick (Scala Language Integrated Connection Kit) is a modern database query and access library for Scala
Quill - Compile-time Language Integrated Queries for Scala
Anorm - The Anorm database library
skunk - A data access library for Scala + Postgres.
Squeryl - A Scala DSL for talking with databases with minimum verbosity and maximum type safety
Relate - Performant database access in Scala
Clickhouse-scala-client - Clickhouse Scala Client with Reactive Streams support
AnormCypher - Neo4j Scala library based on Anorm in the Play Framework
PostgreSQL and MySQL async