Exposed
SQLDelight
Our great sponsors
Exposed | SQLDelight | |
---|---|---|
27 | 31 | |
7,465 | 5,481 | |
2.4% | 2.3% | |
8.8 | 0.0 | |
3 days ago | 2 days ago | |
Kotlin | Kotlin | |
Apache License 2.0 | 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.
Exposed
-
Database Testing with Testcontainers and Kotlin Exposed ORM
object TestDatabase { private val mySQLContainer: MySQLContainer = MySQLContainer("mysql:8.0.26").apply { withDatabaseName("test-db") withUsername("test-user") withPassword("test-password") start() // Start the container } init { val config = HikariConfig().apply { jdbcUrl = mySQLContainer.jdbcUrl username = mySQLContainer.username password = mySQLContainer.password driverClassName = "com.mysql.cj.jdbc.Driver" maximumPoolSize = 10 } val dataSource = HikariDataSource(config) // This doesn't connect to the database but provides a descriptor for future use // In the main app, we would do this on system start up // https://github.com/JetBrains/Exposed/wiki/Database-and-DataSource Database.connect(dataSource) // Create the schema transaction { SchemaUtils.create(Users) } } }
-
I'm creating a REST API using KTOR. What's the best ORM to go with KTOR ?
Exposed SQL is pretty good.
-
How are you all handling database persistence?
Exposed by JetBrains https://github.com/JetBrains/Exposed
-
Why people don't like Java?
Alternatively there are... hybrid solutions like Kotlin's https://github.com/JetBrains/Exposed or https://jdbi.org/ that don't quite... do all the heavy lifting for querying but allow you to sorta stitch queries together manually.
-
Using PostgreSQL as an Append-only Datastore with Kotlin and Exposed
In our last episode (https://youtu.be/Uza\_dWsNMUs) we worked out how to save stock items in PostgreSQL (https://www.postgresql.org/) using the JetBrains Exposed library (https://github.com/JetBrains/Exposed). This time we refactor our existing file-based storage, extracting an interface that we can implement with files, in-memory, or with Exposed. For the database version, instead of replacing items in a table when they change, we choose to implement an append-only datastore. This keeps all the old versions of every row, using a query to select the latest versions when we want to see the current state. This has the advantage that we can rebuild the state of our system if things go wrong, and may also be faster than amending when we consider transactions. This is part 62 of an exploration of where a Test Driven Development implementation of the Gilded Rose stock control system might take us in Kotlin. You can see the whole series as a playlist https://www.youtube.com/playlist?list=PL1ssMPpyqociJNwykAOB9\_KEZVW7BW7m2 and the code on GitHub https://github.com/dmcg/gilded-rose-tdd If you like this, you’ll probably like my book Java to Kotlin, A Refactoring Guidebook (http://java-to-kotlin.dev). It's about far more than just the syntax differences between the languages - it shows how to upgrade your thinking to a more functional style. I have some free time between producing videos and working for team Gilded Rose. If you like these videos I'd like to work with you - please get in touch - [email protected]
-
Writing to db
I have used hikari and exposed to do this in the past with postgres, although other dialects are supported.
-
KTor and non-blocking sql
This falls apart as soon as you need to chain transactions across multiple services/DAOs. You end up making everything non-suspend or use suspendTransaction and have to pass the parent txn around which isn’t ideal (https://github.com/JetBrains/Exposed/issues/1477)
-
PostgreSQL and Exposed - Kotlin database access
Whether or not we persue our Event Sourcing experiment from the lastepisode, we know that we want to store our stock data in a database ofsome sort. So today we investigate using the JetBrains Exposed library (https://github.com/JetBrains/Exposed) to write to and read from PostgreSQL (https://www.postgresql.org/).
-
Could I create a blogging platform with ktor? (For learning purposes)
I used exposed to access a database https://github.com/JetBrains/Exposed. You can use sqlite for the easiest setup.
SQLDelight
- I'm creating a REST API using KTOR. What's the best ORM to go with KTOR ?
-
KMM alternatives to Android Datastore & Room DB?
That functionality has existed for almost exactly a year
-
Adopting Kotlin Multiplatform Mobile(KMM) on 9GAG App
Database - SQLDelight
-
Android Starter Template (hilt, ktor, coroutines, flow, modules, gradle.kts, version catalog, compose, MVVM, tests, GitHub CI)
room is a great example but like I said our data is kotlin-only so we tend to use libraries like sqlDelight.
-
Announcing new crate - "hugsqlx": turning SQLx queries into Rust functions
This seems similar to https://cashapp.github.io/sqldelight/ for kotlin, I think this approach is pretty neat, good luck with it!
-
ADVICE WANTED - Typescript PostgreSQL without ORM
Sounds like you want what SQLDelite offers, but for TypeScript. SQLDelite is only for Kotlin and SQLite though.
-
Why We're Moving on from Firebase
SQLDelight had neat built in support for this
-
Flyweight: An ORM for SQLite
You would really like sqldelight[1] then. It takes the concept of an ORM and flips it on its head. Instead of mapping function calls to SQL statements, it lets you write SQL statements and then generates classes for you that have methods for those statements.
For instance, you could have a SQL statement like getCardsForFight: select * from fights where cardId = ? and titleFight = ?, and it would generate a class that has a method getCardsForFight(cardId: number, titleFight: number).
-
"ORMs have a special place in my heart, not entirely unlike Brutus and Caesar: a dear friend who betrays you and leaves you to die a slow, painful death." – Taming SQL and ORMs with sqlc
SqlDelight is an equivalent library in the Kotlin/JVM ecosystem that follows the same philosophy (write queries in SQL and generate code from them rather than the opposite approach taken by typical ORMs).
The only reason I haven't tested SQLDelight a lot is because they haven't implemented a way to "rename" a table when generating the classes, so if your table is called players... well, now all of the generated classes will also be named Players, which is super annoying.
What are some alternatives?
Ktorm - A lightweight ORM framework for Kotlin with strong-typed SQL DSL and sequence APIs.
Realm Asset Helper - A small library to help with Realm.IO integration in Android apps
kotlin-jpa-specification-dsl - This library provides a fluent DSL for querying spring data JPA repositories using spring data Specifications (i.e. the JPA Criteria API), without boilerplate code or a generated metamodel.
requery - requery - modern SQL based query & persistence for Java / Kotlin / Android
kwery - Kwery is an SQL library for Kotlin
jOOQ - jOOQ is the best way to write SQL in Java
kotliquery - A handy Database access library in Kotlin
RoomAsset - A helper library to help using Room with existing pre-populated database [DEPRECATED].
kotlin-nosql - NoSQL database query and access library for Kotlin
DBFlow - A blazing fast, powerful, and very simple ORM android database library that writes database code for you.
MapDB - MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.