doobie
ScalikeJDBC
Our great sponsors
doobie | ScalikeJDBC | |
---|---|---|
12 | 4 | |
2,119 | 1,254 | |
- | 0.2% | |
8.8 | 8.9 | |
7 days ago | about 18 hours ago | |
Scala | Scala | |
MIT License | Apache License 2.0 |
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.
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
-
mod team resignation by BurntSushi · Pull Request #671 · rust-lang/team
Developer removing a library integration due to above politics
-
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?
It would be more factual to simply link to the PR: https://github.com/tpolecat/doobie/pull/1587
The "trigger" was that Quill (the library) was moved into the ZIO ecosystem. In keeping with their previously stated ethics, tpolecat didn't want to maintain any code linking to that ecosystem. As is their right as a OSS maintainer: https://github.com/tpolecat/doobie/pull/1587
Yes, but that's not what happened here. Tpolecat simply removed some code from their repository because it's associated with an organisation who's ethics they disagree with: https://github.com/tpolecat/doobie/pull/1587
- 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.
ScalikeJDBC
- 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:
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.
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
skunk - A data access library for Scala + Postgres.
Anorm - The Anorm database library
Clickhouse-scala-client - Clickhouse Scala Client with Reactive Streams support
PostgreSQL and MySQL async
mongo-scala-driver
scala-redis - A scala library for connecting to a redis server, or a cluster of redis nodes using consistent hashing on the client side.
scala-migrations - Database migrations written in Scala