ORMs are nice but they are the wrong abstraction

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • pgtyped

    pgTyped - Typesafe SQL in TypeScript

  • ORMs suck, but raw SQL embedded in your code sucks too.

    This might be good time to plug my TypeScript non-ORM: https://jawj.github.io/zapatos/.

    I should say I also like what I've seen of https://kysely.dev/ and https://pgtyped.dev/.

  • kysely

    A type-safe typescript SQL query builder

  • ORMs suck, but raw SQL embedded in your code sucks too.

    This might be good time to plug my TypeScript non-ORM: https://jawj.github.io/zapatos/.

    I should say I also like what I've seen of https://kysely.dev/ and https://pgtyped.dev/.

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • jOOQ

    jOOQ is the best way to write SQL in Java

  • Permazen

    Language-Natural Persistence Layer for Java

  • The most interesting/fresh approach I've seen to this problem is Permazen.

    https://github.com/permazen/permazen/

    It starts by asking what the most natural way is to integrate persistence with a programming language (Java in this case, but the concepts are generic), and then goes ahead and implements the features of an RDBMS as an in-process library that can be given different storage backends as long as they implement a sorted K/V store. So it can sit on top of a simple in-process file based K/V store, RocksDB, FoundationDB, or any SQL database like PostgreSQL, SQLite, Spanner, etc (it just uses the RDBMS to store sorted key/value pairs in that case).

    Essentially it's a way to map object graphs to key/value pairs but with the usual features you'd want like indexing, validation, transactions, and so on. The design is really nice and can scale from tiny tasks you'd normally use JSON or object serialization for, all the way up to large distributed clusters.

    Because the native object model is mapped directly to storage there's no object/relational mismatch.

  • DPP

    Deep Persistent Proxy Objects for JavaScript (by robtweed)

  • Another approach to this is DPP -- Deep Persistent Proxy Objects for JavaScript:

    https://github.com/robtweed/DPP

  • drizzle-orm

    Headless TypeScript ORM with a head. Runs on Node, Bun and Deno. Lives on the Edge and yes, it's a JavaScript ORM too 😅

  • sqlc

    Generate type-safe code from SQL

  • Agreed, but tools like https://sqlc.dev, which I mention in the article, are a good trade-off that allows you to have verified, testable, SQL in your code.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts