I tried 8 different Postgres ORMs

  Рет қаралды 409,391

Beyond Fireship

Beyond Fireship

Күн бұрын

Let's compare 8 ways to work with SQL databases in a JavaScript project like Node.js or Next.js. Analyze the pros and cons of libraries and ORMs that can run Postgres queries in a fullstack framework.
#sql #javascript #webdevelopment
Learn more in full Next 13 Course fireship.io/co...
- pg github.com/bri...
- postgres.js github.com/por...
- knex github.com/kne...
- kysely github.com/kys...
- sequelize github.com/seq...
- typeorm github.com/typ...
- prisma github.com/pri...
- drizzle github.com/dri...

Пікірлер: 710
@cjgj
@cjgj Жыл бұрын
The real ORM is the friends we made along the way -- Our Real Mates
@NexusGamingRadical
@NexusGamingRadical Жыл бұрын
Nice sql comment at the end there. Very explanatory.
@peterszarvas94
@peterszarvas94 Жыл бұрын
It's about the vulnerabilities we made along the way
@VikashXman
@VikashXman Жыл бұрын
eval(node run test)
@Y2Kvids
@Y2Kvids Жыл бұрын
And Tables We Dropped
@ZM-dm3jg
@ZM-dm3jg Жыл бұрын
I made friends with ChatGPT along the way
@hanifali3396
@hanifali3396 Жыл бұрын
0:20 (S-Q-L), 0:31 (Squeal), 0:52 (Sequel) He pronounced SQL all three different ways so everyone is happy 😂
@jorgechristophergarzasepul3209
@jorgechristophergarzasepul3209 Жыл бұрын
Or everyone angry
@joshuapare4304
@joshuapare4304 Жыл бұрын
don't tell that to @ThePrimagean, clearly only one of those is truly correct
@maheshprajapati9441
@maheshprajapati9441 Жыл бұрын
Squirrel gang
@cristophermoreno2290
@cristophermoreno2290 Жыл бұрын
gold
@Draghful
@Draghful Жыл бұрын
I just wanted to point that out. My brain was like "dafuq am I hearing?!?" 🤣
@dbreen12
@dbreen12 Жыл бұрын
The timing of this video is impeccable. Been spending the last few days looking into these ORMs
@Showmatic
@Showmatic Жыл бұрын
same, and I'm learning towards drizzle
@pomberorajy
@pomberorajy Жыл бұрын
same x2
@cristinel1
@cristinel1 Жыл бұрын
Same x3
@er3n_
@er3n_ Жыл бұрын
just write SQL
@LuisSierra42
@LuisSierra42 Жыл бұрын
Been using sequelize and typeorm recently
@tyu3456
@tyu3456 Жыл бұрын
MikroORM should be on this list. Has all the benefits of an ORM, but lets you easily fall back to a Knex-like query builder when needed. And crucially, it's much better maintained than Sequelize or TypeORM
@tronikel1434
@tronikel1434 Жыл бұрын
yep, really a shame that mikro orm is not well known, its superb
@nifalconi
@nifalconi Жыл бұрын
It’s amazing. Like the best thing ever. The only sad thing is that there’s like one maintainer/creator. The guy is amazing ❤
@EulerJr_
@EulerJr_ Жыл бұрын
I agree! And MikroORM works great with MongoDB too.
@bedirhancelayir3295
@bedirhancelayir3295 Жыл бұрын
Definetely agree
@alexnezhynsky9707
@alexnezhynsky9707 Жыл бұрын
Yes, B4nan is a superhero
@petrsehnal7990
@petrsehnal7990 Жыл бұрын
Breaking world record for most useful information per second of video each time you post someting. Respect, Sir!
@MateHomolya
@MateHomolya Жыл бұрын
This video is so well timed, I was literally transitioning from Firestore to Postgres database with a project just now.
@moyin1038
@moyin1038 Жыл бұрын
Bro same 😂
@ruaidhrilumsden
@ruaidhrilumsden Жыл бұрын
I can understand the Web dev community generally straying away from writing raw SQL, but as an analyst moving to Javascript from having written primarily SQL for the past 6yrs it can be a bit frustrating that the whole ecosystem is based on trying not to do what I'm most comfortable doing - it feels like my mad SQL skills are being somewhat nullified! Great vid Jeff, I haven't seen postgres js before - I will defo be using it.
@ahmad-murery
@ahmad-murery Жыл бұрын
I'm not an analyst but I used to do a lot of raw sql and still find it easier to me than using ORMs especially for complex queries where (sub-queries, CTE, aggregation with OVER clause and maybe make use of sql variables, procedures, functions and temp tables) is needed. Simply I'm more comfortable with SQL and it's easier for my to translate my ideas directly into what the Database can understand natively. I feel you
@igalklebanov921
@igalklebanov921 Жыл бұрын
You should give Kysely a try. We focus on 1:1* and have CTEs, window functions, etc. But also type-safety and autocompletion.
@ahmad-murery
@ahmad-murery Жыл бұрын
@@igalklebanov921 Looks nice and intuitive for one with average sql background, I'll give it a try once I have a chance. Thanks
@matthewrutter8343
@matthewrutter8343 Жыл бұрын
Programmers hate being embarrassed. That's why they go to orms. It allows them to ignore the holes in their skill set while being able to goldplate over things for no reason to feel important. 100% ego.
@ahmad-murery
@ahmad-murery Жыл бұрын
@@matthewrutter8343 Maybe you have a point regarding the skill holes, but maybe it's the other way around as I myself find it very hard to memorize ORM methods, in the same time I can easily do what I want using raw SQL, this caused me some embarrassment in a project I was a member of, so to the others this was a hole in my skills. I'm a programmer with bad memory😎
@elitalpa
@elitalpa 6 ай бұрын
I watched this video again to remember the differences between certain libraries and ORMs so I made a list: 1. 1:30 pg 2. 3:24 postgres.js 3. 4:11 knex 4. 5:20 kysely 5. 6:13 sequelize 6. 7:11 typeorm 7. 7:55 prisma 8. 8:51 drizzle-orm May this be helpful to someone else as well.
@heegj
@heegj 5 ай бұрын
+1, need those youtube chapters
@eved.a
@eved.a 6 күн бұрын
exactly what I was looking for, thx
@Mixesha001
@Mixesha001 Жыл бұрын
MikroORM is awesome and deserve more love. It does what all these ORM do and is battle tested, fast, and well maintained.
@nicky-hajal
@nicky-hajal Жыл бұрын
I have been looking into MikroORM and confused why it doesn't get much attention and review by the community.
@clingyking2774
@clingyking2774 Жыл бұрын
This guy has the most useful content, without wasting any time.
@Kingromstar
@Kingromstar Жыл бұрын
The two reasons to use an ORM such as Prisma and TypeORM is so you get types for your code and so you don't have to update every single query when you update a column to a table.
@furycorp
@furycorp Жыл бұрын
In my experience with anything beyond a todo list both of those fall apart and have a lot of oversights that are a pain in the ass.
@Slashx92
@Slashx92 Жыл бұрын
@@furycorp I agree. It's more of a "pick your poison" issue with orms vs querybuilders vs sql clients although I would argue the last one is the less scaleable by far
@ooogabooga5111
@ooogabooga5111 Жыл бұрын
prisma is okey for hobby simple projects but will fall out of hands when it gets complex with logic. Also there is no native joins.
@ooogabooga5111
@ooogabooga5111 Жыл бұрын
prisma won't scale up
@clingyking2774
@clingyking2774 Жыл бұрын
TypeORM is the only ORM that actually makes sense because Java uses a similar pattern and Java is Holy.
@stevenhe3462
@stevenhe3462 Жыл бұрын
Rails, Django, Laravel, and Phoenix developers: Yay!! We don't have to deal with this JavaScript madness.
@sushantjain3360
@sushantjain3360 3 ай бұрын
then they face problems in scaling
@yogeshsirsat
@yogeshsirsat 2 ай бұрын
@@sushantjain3360 not every project is going to be instagram
@ileies
@ileies Жыл бұрын
Hours of research without real outcome and then one video and I know what to choose. You're my favorite KZbinr for a reason. 😋
@MAC0071234
@MAC0071234 Жыл бұрын
I was gonna try typeORM a year ago, but found many articles warning not to use it because it wasn't maintained and had lot of issues. I have tried sequelize, it's great but it needs a lot of setup and it doesn't fully support typescript. I was gonna try Prisma recently, but then someone said that it had issues too with the Rust engine and that there being too much "overhead" and that it was bad for joins. Not to mention that your code would be third party dependant, as Jeff stated. Would really like a video about the underlying structure and flow in ORMs and their tradeoffs, not just about syntax. Appreciate your work :)
@WolfrostWasTaken
@WolfrostWasTaken Жыл бұрын
Prisma only gives issues with the Rust backend if you plan on deploying it on a lambda function or using serverless in general. And you can still solve all of these issues, it just requires more work and it's not "out of the box".
@buzz1ebee
@buzz1ebee Жыл бұрын
Typeorm is actively maintained at the moment. There was a year or so where things were stable, but since v0.3 it's been fairly regularly updated.
@h3nry_t122
@h3nry_t122 Жыл бұрын
the only issue with Prisma is when using server less. thats the only problem. if you're not using server less then you're perfectly fine.
Жыл бұрын
I'm currently using pg + postrgrator for migrations + sql-ts to generate types from DB. Works like charm. Type checking of sql is done by my IDE (intellij) anyway.
@eliya.c
@eliya.c Жыл бұрын
The issues that you've mentioned using raw SQL queries can be solved by using SafeQL. Zero abstractions, zero runtime code.
@RasmusSchultz
@RasmusSchultz Жыл бұрын
Yes, please. The best ORM is no ORM 🙂👍
@VGDGF
@VGDGF Жыл бұрын
After experience with most of orms, Objection has the best developer experience with great performance
@igalklebanov921
@igalklebanov921 Жыл бұрын
Have you tried Kysely? koskimas is the author behind both of them. :)
@destroyer-tz2mk
@destroyer-tz2mk Жыл бұрын
Hey there fireship, sequelize doesn't support typescript but there's a new sequelize-typescript that does, it would've been nice if you did that.
@Ke5o
@Ke5o Жыл бұрын
Sequelize does actually support Typescript if you look through the docs, but it's annoying to set up and mostly scuffed in my experience. It's not an easy drop in.
@daleryanaldover6545
@daleryanaldover6545 Жыл бұрын
@@Ke5o it was so scuffed that they need to re-write most of the features when releasing v7
@tenthlegionstudios1343
@tenthlegionstudios1343 Жыл бұрын
Snuck in a video in response to the codedam issues with Prisma. Like your approach here - mentioning all pros and cons, going over each option. Great work!
@tj_mora
@tj_mora Жыл бұрын
I'm developing a webapp and used MongoDB Atlas for it and Mongoose makes my life easier. But then I realized I'm better off with a relational database because there's a lot of relational data on my backend. I chose Postgres and studied Sequalize and I like how Sequalize is very similar to Mongoose. However, I also came to the conclusion that Supabase will make my project easier to maintain. So I signed for Supabase only to notice that there's no ORM for it. Everything is interfaced through the Supabase API. To manipulate data before they get stored in the database, you would need to write database functions, edge functions and triggers. Creating schemas, constraints, indexes, and RLS policies need to be written in SQL (though some of these can be done through the UI). Supabase was supposed to simplify a lot of stuff, but I'm finding it time-consuming to set up a lot of things. Why can't it be as easy a Sequalize?
@foreach1
@foreach1 Жыл бұрын
Supabase is a normal Postgress db. You can use any orm you want with it
@tj_mora
@tj_mora Жыл бұрын
@@foreach1 You can only use these ORMs if you have a server-side middle layer between the client and supabase. But obviously if you do that, then why not just use a self-hosted Postgres cluster? We use Supabase for the ability to remove the server-side middle layer. So it's just Supabase and client-side. And you can't really use any ORM for any of these sides. I actually like that approach and I can see it being easier to maintain in the long run. But damn the set up is hard. Migration is hard. Supabase docs are garbage. And Supabase tutorials on KZbin doesn't really cover the very specific database needs/designs that I have. Though I'm pretty sure if I study this more for several more days I can finally get the hang of it.
@mileselam641
@mileselam641 Жыл бұрын
Best ORM is either no ORM or one that auto-generates the access layer based on the structure and types you've already defined in the database. Anything in between is just excess heat and trauma.
@ReinPetersen
@ReinPetersen Жыл бұрын
Hi! I just wanted to add another perspective regarding ORMs. My experience is that they should be considered anti-pattern and I can outline the reasons why: 1. they won't excuse developers from having to understand good database design and proper querying and, most often, introduce N+1 problem through that naivete 2. they encourage direct table access with what amounts to adhoc SQL which ties the hands of database developers when the need arises to reorganize data for scale and performance 3. most relational databases offer things like functions, stored-procs and prepared statements which parameterize queries to solve things like: a. combating sql injection b. providing an access layer tier above base tables which: i. provides API-like access and ii. grants the freedom to re-org base tables as needed iii. simplified access-level authorization Those are the main points (there are others). Whether an ORM is used or not, there is no escape from getting to know your serialization (storage) layer well. You should be using functions or stored-procs as access points to your database regardless. Which then begs the question, why do you even need an ORM?
@jntaca
@jntaca Жыл бұрын
Have a lot of projects in production. Some of our codebase accesses MySql, PG and SQLite, so Knex is our definitive tool. Also it handles transactions like a charm.
@alejandrombc
@alejandrombc Жыл бұрын
A video about correct ways to hande migrations for multiple teams would be very handy!
@rajeevkl6966
@rajeevkl6966 Жыл бұрын
use rails/laravel/django everyone can do their own migrations & it rarely conflicts
@startup-streak
@startup-streak Жыл бұрын
My conclusion is that as long as you use raw SQL with the chosen ORM's raw method, you will have control over the performance. However, when you start using their innerJoin built-in methods, you may encounter performance issues. Nonetheless, using raw SQL for complex queries defeats the purpose of using an ORM. This raises the question of which ORM to use that provides a good migration tool and a well-defined schema with types. I believe ORMs are suitable for simple projects, but when it comes to large projects with complex queries and performance optimization requirements, they may not be ideal. Therefore, you will most like be using the ORM for defining schemas and migrations and writing raw SQL for most queries.
@igalklebanov921
@igalklebanov921 Жыл бұрын
You should try a query builder like Kysely instead of going raw SQL in complex queries. We're trying to be 1:1* with compiled SQL and go deeper than ORMs usually do - as long as it can be implemented in a type-safe way.
@cesarayalavargas3623
@cesarayalavargas3623 Жыл бұрын
If you need advanced postgresql like views, materialized views, PostGIS I would recommend to use pg, choosing the right ORM depends on your project requirements so you must study first what features you will need and do research for the best of your needs
@rushtothemax76
@rushtothemax76 Жыл бұрын
in my opinion they are all good options and I would just look at what saves me the most time and works good with typescript. So I usually go with prisma :) Having said that if you are just a beginner you might wanna go with the orm's that you have to use raw SQL so you know how everything works.
@ooogabooga5111
@ooogabooga5111 Жыл бұрын
prisma won't scale up
@nithin3476
@nithin3476 Жыл бұрын
@@ooogabooga5111 hey what about drizzle
@IDOLIKIofficial
@IDOLIKIofficial Жыл бұрын
@@ooogabooga5111 How is that so? I use prisma on applications with 3M MAU. Loads pretty fast for everyone
@jugurtha292
@jugurtha292 Жыл бұрын
I prefer writing raw sql queries. Orm tend to make simple things simpler and hard things harder
@igalklebanov921
@igalklebanov921 Жыл бұрын
You should try Kysely. Its all about trying to be 1:1* to compiled SQL (WYSIWYG design principle) and aims at supporting advanced functionality ORMs just don't bother going into or can't.
@lechi_2002
@lechi_2002 Жыл бұрын
I agree with you. Also debugging raw queries is much easier as you copy the sql string and execute it manually.
@MinibossMakaque
@MinibossMakaque Жыл бұрын
Absolutely. Plain SQL with prepared statements all the way. ORMs solve one problem while making a giant headache of everything else, other than maybe migrations. I don't know why the most widely adopted approach to a vulnerability was to abstract away the entire language.
@ba8e
@ba8e Жыл бұрын
@@MinibossMakaque I will never fucking understand the insanity of ORM. Literally makes everything worse, a useless abstraction.
@LuisSierra42
@LuisSierra42 Жыл бұрын
Except when you have tons and tons of complex queries and that sometimes occupy and entire file
@fr1tzw4lt3r
@fr1tzw4lt3r Жыл бұрын
For Postgres PgTyped is an awesome project. You write bare SQL and it typeschecks agains the databse and generates query methods that are comletely typesafe, even with complex joins or recursive queries.
@simonboddy7415
@simonboddy7415 Жыл бұрын
This is how god intended us to use databases. Its so simple, so powerful, such superior performance. It's just amazing how long this approach took to surface, and how little known it is.
@EDemircivi
@EDemircivi 8 ай бұрын
damn. I just learned about PgTyped, thanks to this comment. it is a gods gift.
@john_smith281
@john_smith281 Жыл бұрын
Using intellij sql intellisense in the code is way better than every orm can ever been.
@omri9325
@omri9325 Жыл бұрын
🤮
@h3nry_t122
@h3nry_t122 Жыл бұрын
well damn.
@gawwad4073
@gawwad4073 Жыл бұрын
ORMs are cancer
@isaiahkahler5429
@isaiahkahler5429 Жыл бұрын
I also like what Supabase did with their new CLI, although not exactly an ORM. It generates typescript types for you based on the tables that you make inside of the dashboard, which you use with the SDK to make safe queries. One of the easiest ways to get a great DX with SQL in my opinion.
@AtiqSamtia
@AtiqSamtia Жыл бұрын
Nice to have Eloquent ORM baked right in the Laravel Framework providing all of these and more features out of the box.
@tdug1991
@tdug1991 Жыл бұрын
Out of every ORM I've ever used, my favorite experience was using Ecto [Elixir programming language]. Note that this language, and also ORM, have a pretty steep learning curve, so it can seem obtuse at first. Other ORMs I've used include Django, SQL Alchemy, ActiveRecord, and a couple JavaScript ones.
@c0ldfury
@c0ldfury Жыл бұрын
Quarkus reactive is pretty sweet. But for sheer performance Go and Elixir libraries seem unbeatable.
@nested9301
@nested9301 2 ай бұрын
ok nerd we know that u use 'elixir'
@jordanebelanger3918
@jordanebelanger3918 Жыл бұрын
When using pg, run your migrations and then use schemats to dynamically generate typescript types from the db itself for great type safety.
@carloss3028
@carloss3028 9 ай бұрын
Long live typesafe query builders (aka Kysley and Drizzle ORM)
@SogMosee
@SogMosee 7 ай бұрын
yassssssssss
@BellCube
@BellCube Жыл бұрын
Alright, now just to figure out how to shove a frickin' matress into my backend so my project won't fail. Thanks for the advice!
@FalioV
@FalioV Жыл бұрын
The first 20 seconds are the most accurate stuff ever. I start with MSSQL and then switched to MongoDB and I was like "Yeah this is the best, I will never go back to sql" yeah but ... years later I'm now working only with MySql and I like it way more then mongo ... Currently using sequelize and the work is so easy to do.
@sarmadrafique426
@sarmadrafique426 Жыл бұрын
Drizzle for the next Project.
@mozart-2003
@mozart-2003 Жыл бұрын
I used Prisma for several months and I love it because of its easy interfaces but it had some drawbacks: 1. I had to copy large rust binaries into a image when using docker 2. Also had to generate a prisma client file by running `prisma generate` Totally, it was a MAGIC and similar to how I felt when I was using Rails. I'll try Drizzle.
@rounaksen1683
@rounaksen1683 Жыл бұрын
Man That Ending !!! Super
@bugs389
@bugs389 Жыл бұрын
Great video. I'd enjoy an overview of ORMs in other languages too, such as SqlAlchemy, Entity Framework, etc.
@unknownChungus
@unknownChungus Жыл бұрын
Typeorm doesn't give full type safety. Even when you pass selective columns in select option for find method, the return type will still be array of entity and not array of those selective columns.
@henninghoefer
@henninghoefer Жыл бұрын
After 15 years of backend development (on the JVM though), I'll take a query builder over an ORM every time. Also: Migrations "down" are usually not worth your time (how to roll back a dropped column or table anyway?)
@F38U
@F38U Жыл бұрын
Eloquent is not that bad tbf
@IvanRandomDude
@IvanRandomDude Жыл бұрын
Same. I used Spring Data JPA back in the day until I discovered jOOq.
@agcodes
@agcodes Жыл бұрын
prisma is the GOATEST
@angmathew4377
@angmathew4377 Жыл бұрын
I was less inclined to watch this earlier but, hey man, you rocks. Lots of clear and concise stuff in the video.
@blambillotte
@blambillotte Жыл бұрын
“joist-ts” is an awesome option for graphql + Postgres - has dataloader built in so any graph queries are N+1 safe. Reminds me a lot of ActiveRecord for Rails
@chrisalexthomas
@chrisalexthomas Жыл бұрын
lol, the ending was perfect :D well done Mr Fireship
@shoopddawhooped
@shoopddawhooped 3 ай бұрын
drumroll to commercials, well played mastery.
@carlotadias9335
@carlotadias9335 15 күн бұрын
Love the memes you put in tue beginning ! 😂😂😂😂
@AbderrahmanFodili
@AbderrahmanFodili Жыл бұрын
being a laravel developer feels like a ghoast or a stranger when you watch these videos
@changwufei5
@changwufei5 Жыл бұрын
sequelize has been my go to for small project for about 5 years.
@Nyasha_Nziboi
@Nyasha_Nziboi Жыл бұрын
Thank you so much for this was struggling to choose an ORM to use till now
Жыл бұрын
Love the ending :)
@dexterantonio3070
@dexterantonio3070 Жыл бұрын
I worked at a company that did everything with raw sql. We had a about 100 tables and it worked great. This is not a typical apparently.
@igalklebanov921
@igalklebanov921 Жыл бұрын
Until you need to do some things dynamically, conditionally or repetitively, and end up maintaining your own query builder. Just use a query builder. :)
@dexterantonio3070
@dexterantonio3070 Жыл бұрын
@@igalklebanov921 I agree with that. I had some code that involved string concatenations to form an and string for an internal data science application. I began using a query builder right before I left to replace that annoying and unsafe code.
@aurelianspodarec2629
@aurelianspodarec2629 9 ай бұрын
@@igalklebanov921 NextJS 13 exists
@KevinVandyTech
@KevinVandyTech Жыл бұрын
Joist is also interesting. It really focusses on great Typescript and lazy loading support while also automatically solving n+1 problems.
@ooogabooga5111
@ooogabooga5111 Жыл бұрын
@beyondfireship.. lmao
@agammore
@agammore Жыл бұрын
Awesome video! And amazing that you're giving a free consultation, people should flock for that!
@Bobobratwurscht
@Bobobratwurscht Жыл бұрын
I personally love supabase‘s approach best - you have a GUI to create and update tables or columns
@Ontropy
@Ontropy 2 ай бұрын
the first is point is too true, i learnt mysql in school, jumped ship to nosql dbs in college, realised yesterday sql was the solution all along, watching this vid today 🤣🤣
@megaxlrful
@megaxlrful Жыл бұрын
At my dayjob the application teams write raw SQL queries because they can't replace the ancient ORM that came with the framework. Some developer wrote an abstraction library over the database connector that is actually quite nice. You construct a Query object. For example new GetUserById(id); And then do $q->result($db); which yields you the User object you were looking for. Or null.
@mieszkogulinski168
@mieszkogulinski168 5 ай бұрын
Prisma internally has large overhead because of all these abstraction layers, a regular SELECT query took over 100 ms while an identical query in TypeORM took 10 ms or so
@abdulkaderjeelani
@abdulkaderjeelani Жыл бұрын
Prisma for migrations (ddl), Kyseley for interactions (dml)
@igalklebanov921
@igalklebanov921 Жыл бұрын
❤from Kysely.
@fallout__boy1130
@fallout__boy1130 Жыл бұрын
Prisma has a very good documentation and developer experience. I recommend it over the others. It is very easy to setup and to use.
@LuisSierra42
@LuisSierra42 Жыл бұрын
It looks pretty interesting
@md.redwanhossain6288
@md.redwanhossain6288 Жыл бұрын
It has no sql joins. Horrible
@fallout__boy1130
@fallout__boy1130 Жыл бұрын
@@md.redwanhossain6288 of course it has support for joins. Rtfm.
@chess4964
@chess4964 Жыл бұрын
prisma so slow
@iambor1393
@iambor1393 Жыл бұрын
Trust me, you don't want to bother with sequelize if you're using typescript. It just causes so many weird bugs, is not documented as well as it looks at first glance (many options objects are not specified in the api documentation, at least when i last used it), and forget it if you want to write a complicated query.
@tristan7668
@tristan7668 Жыл бұрын
But TypeORM has a lot of bugs, Prisma is not a good choice for complex app, now we have only MikroORM (which some programmers recommend as a great choice), but I don't see large companies in real life using this ORM. And finally, we have query builders like knex or database drivers to write raw SQL queries.
@igalklebanov921
@igalklebanov921 11 ай бұрын
@@tristan7668 You should try Kysely. It's inspired by Knex, but is type-safe first, immutable, predictable, extensible, and probably more expressive at this point.
@kai12626
@kai12626 Жыл бұрын
Thank you. Perfect timing, that exactly what i'm looking for.
@randsonalves5978
@randsonalves5978 Жыл бұрын
this is gonna be very useful for my typescript api, living and leaning...
@praveenvinopv9929
@praveenvinopv9929 Жыл бұрын
Once you started using prisma you never go back ❤
@abhinavadarsh7150
@abhinavadarsh7150 Жыл бұрын
Unless you started having serious performance issues.
@abdirahmann
@abdirahmann Жыл бұрын
@@abhinavadarsh7150 and a big pocket once your business grows cause you'll have to foot that bill for those terrible SQL it generates to make all that magic possible!
@EnriqueDominguezProfile
@EnriqueDominguezProfile Жыл бұрын
0:30 he said it properly. Squeal. ❤
@mrgalaxy396
@mrgalaxy396 Жыл бұрын
That snoop dogg line was absolute gold.
@mahadevovnl
@mahadevovnl Жыл бұрын
I kinda prefer Knex because it gives me control and everything still looks and feels like SQL. Very transparent in its use. No need to figure out how joins work in an ORM or if it does expensive sub-queries. I'm responsible for optimizing it, and... ChatGPT is also familiar with it.
@igalklebanov921
@igalklebanov921 11 ай бұрын
You should try Kysely. It's inspired by Knex, but is type-safe first, immutable, predictable, extensible, and probably more expressive at this point.
@frhazz
@frhazz Жыл бұрын
I've been spending the last 3 weeks trying to make migrations works with TypeORM, in a Nestjs Application bundled with webpack, I don't recommend it to anyone (more than happy if someone has a solution to share, with dynamic import of entities and migration files) At that point I thing the best bet is to go with Prisma
@vitorguidorizzzi7538
@vitorguidorizzzi7538 Жыл бұрын
you might have brain damage
@AttackOnTyler
@AttackOnTyler Жыл бұрын
I've been looking into ORMs as a way of writing better VBA apps. I know, I know, VBA... eww. However, some companies think open source is scary, so Excel is the only tool... blah blah blah... Creating typed objects that represent rows and tables in databases with parameterized crud sql operations saved in a local folder, and a client wrapper object to establish the connection to, query and creation of objects containing data pulled from databases has been some of the most fun I've had in years. All of these modules give different DX, and that's great. However, I think the overreliance of abstractions on abstractions makes the process of learning JS and TS a nightmare for new devs. No one understands the language and instead only understands the framework/module/package and probably only a small fraction of that at that. Rolling my own ORMish thing in a language that doesn't has been a fantastic learning experience and has made connecting to data in my apps a breeze. BTW, I modeled my VBA classes after the generated prismaClient and it's beautiful. Of course implementing a schema hook file and making a VBA_ORM reference library that could do migrations and client generation would be phenomenal, but that's not going to be for some time. Great video as always!
@miko999x
@miko999x Жыл бұрын
that clifhanger man, still waiting for the final result :D :D lol
@TechDiffuse
@TechDiffuse Жыл бұрын
Awesome job Jeff. Thanks for creating such a concise and entertaining video.
@sibabratswain4557
@sibabratswain4557 Жыл бұрын
I worked extensively in one of the ORM that’s Eloquent which Laravel uses which is a PHP framework
@ekoprasetyo3999
@ekoprasetyo3999 Жыл бұрын
Been using sequelize, and typeorm and typeorm is the most comfortable to me
@RaphaelFellowes
@RaphaelFellowes Жыл бұрын
Enjoying using Prisma along with Redwood JS at the moment, but the lack of support for PostGIS and spatial types is a bit of a drawback at the moment. Hopefully that support comes soon.
@diegozarate8088
@diegozarate8088 Жыл бұрын
I don’t recommend using typeorm, as queries get complex doesn’t handle relations well and we have had some issues with the heap memory in production.
@progressnwimuelekara2167
@progressnwimuelekara2167 Жыл бұрын
Which ones would you recommend and in what order?
@hi_im_julian_kirsch
@hi_im_julian_kirsch Жыл бұрын
Well, with Rust and SQLx' Macros you'll get that sweet love from the IDE as well. This amazing library allows your IDE to tell you at edit-time, that your SQL either doesn't match the DB schema or your DTO don't match what you're requesting (i.e. type wise). And I think that's beautiful
@jofla
@jofla Жыл бұрын
I don't see how is it different than kysely. also check zio-sql
@charlesbcraig
@charlesbcraig Жыл бұрын
Been playing with Prima and GORM (Go). The amount of time I’ve spent setting them up and tweaking them instead of just working on my MVP with the few CRUD statements I actually need is…not great. I guess I like the idea cause for some reason I think I need to be able to change my database on a whim.
@BrunoJuliao7
@BrunoJuliao7 Жыл бұрын
Data suppository 🤣 I almost fell off the chair 🤣
@asimami
@asimami Жыл бұрын
I love the "Data Suppository". :D
@sylvance_theone5738
@sylvance_theone5738 Жыл бұрын
kysely and drizzle are great.
@igalklebanov921
@igalklebanov921 Жыл бұрын
❤ from Kysely.
@vorandrew
@vorandrew Жыл бұрын
Absolutely love intro!!!!
@gavinmasterson2242
@gavinmasterson2242 Жыл бұрын
"With great abstraction, comes great dependency." - Uncle Ben
@WolfrostWasTaken
@WolfrostWasTaken Жыл бұрын
Prisma also support MongoDB which is a huge W considering it also supports types (which are basically strictly typed jsonb embedded in the documents, making denormalization much nicer)
@vladislavstepanov7591
@vladislavstepanov7591 Жыл бұрын
typeorm is a buggy piece of software. I was in a projects with typeorm and i don't want to repeat that experience
@WolfrostWasTaken
@WolfrostWasTaken Жыл бұрын
@@vladislavstepanov7591 typeorm is a library. But I generally agree yeah it's not a good ORM (I also have experience with it). You need to be aware of a ton of gotchas while using it.
@kerodfresenbetgebremedhin1881
@kerodfresenbetgebremedhin1881 Жыл бұрын
slonik sees no love, I see how it is
@beyondfireship
@beyondfireship Жыл бұрын
Trying it out now, disappointed i overlooked it
@yash1152
@yash1152 Жыл бұрын
0:38 using libraries & ORMs to access SQL to: * get IDE language server completions * migrations * connect to db * handle security * madelling relationships in data
@albertszymanski7177
@albertszymanski7177 Жыл бұрын
I'm disappointed by not seeing MikroORM on the list. For me personally it's the best tool with true ORM features in NodeJS. It does not invent anything new in particular and is based on solid, battle tested ORMs from other languages like Hibernate and Doctrine. I migrated a project to MikroORM 2 months ago from Prisma and I'm really glad I did. It makes writing domain-oriented backends pretty fun. I really hope it'll get some more attention soon, especially that it is developed and mantained just by Martin Adamek in his free time, so just imagine how cool it would be if he was supported by more people financially and could give more of his time for this awesome project.
@brian-brian
@brian-brian Жыл бұрын
I agree, I wonder why people talk about drizzle so much (ofc it is also another awesome tool, but for different use-cases) when Mikro has been on the market for quite a while and receives great opinions from its users.
@skyhappy
@skyhappy Жыл бұрын
Why is it better than prisma
@albertszymanski7177
@albertszymanski7177 Жыл бұрын
@@skyhappy I'm not saying it is better in every aspect. As with every tool that is used, has at least some popularity and is not forgotten there has to be something great about the tool so people use it. It's like saying that JS is bad because ex. in building backends that require the quickest response time possible it sucks. The statement is true in this case, but overall JS has its advantages in other parts of software development and therefore it is one of the most popular languages. But, comming back to ORMs, prisma has great DX, awesome documentation and support. However there are some things I do not like about it: 1. Prisma schema is great for defining DB structure, but in larger projects with many models it becomes cluttered and there is no official support for splitting it up into more files yet 2. Prisma does not allow to map DB tables to domain classes and vice-versa so in order to write domain-oriented code you have to write domain-persistence mappers on your own 3. Prisma does not have a change tracker, so with prisma you always have to explicitly track what has changed and give it to prisma query These are just the most important things I've noticed using Prisma but there are more like transactions, UoW etc. I'll still use Prisma in smaller projects or in those in domain is not complicated, but in other cases I'll stick to MikroORM.
@DjNickWave
@DjNickWave Жыл бұрын
I think the problem with Mikro is that it has a really good DX but while scaling you learn that it is a lot slower than other ORMs/Query Builders. Prisma and TypeORM are not really fast either but at least faster. Knex is okay with own interfaces but a pain to setup but super fast. Drizzle combines the performance of knex while trying to imitate the DX of the best tools in the JS-ecosystem and is I think rightfully in all discussions currently. Disclaimer: We don‘t use it and moved away from sequelize and a test with TypeORM to knex due to performance issues.
@felixakingbulu588
@felixakingbulu588 Жыл бұрын
Pls is MikroORM totally free?
@HantonSacu
@HantonSacu Жыл бұрын
elixir's ecto 'toolkit for data mapping and language integrated query' is easy to use. it's kinda with js because phoenix liveview is a good and safe abstraction on js. and ecto is a good and safe abstraction on postgres.
@jessejayphotography
@jessejayphotography Жыл бұрын
Glad someone mentioned elixirs ecto.
@mjdryden
@mjdryden Жыл бұрын
ORMs are one of those things that aren't worth the trouble in the long run. They can be nice in a quick prototype, but for an app that lives for at least a few years, you'll inevitably start bumping into performance issues or weird ORM behaviour that costs a lot of time to resolve. The first time I encountered an ORM I thought it was magic, but after 15+ years in the business, I no longer find them worth the trouble. Writing raw SQL isn't that hard and as long as you use parameterized statements, much less likely to bite you in the end. Save your future self the headache and start with a low level library.
@saadabbasi2063
@saadabbasi2063 Жыл бұрын
Jeff And Ozzyman are my most favourite Australians ❤️
@AndreasBeder
@AndreasBeder Жыл бұрын
I am quite happy with Prisma. They did an amazing job.
@neutralitat2570
@neutralitat2570 Жыл бұрын
Prisma is awesome while you’re not using geometry types 😢 also migrations is still a bit vague
@IbrahimKwakuDuah
@IbrahimKwakuDuah Жыл бұрын
Entity framework + LINQ, saves you a ton
@mhadi-dev
@mhadi-dev Жыл бұрын
I made a similar research a while ago, I ended up using Prisma, it's a grate tool, great CLI, Fantastic Types if the DB is structured well, but I think you lose some performance specially when you do joins. I was thinking of using Prisma only for TS and migrations. and for complex queries, I might using raw SQL. I also faced an issue learning the Prisma schema file, but I used another way to evade learning new markup language. so first I write my sql changes in the DB, run "prisma db pull" , then drop/delete db changes, then run "prisma migrate dev"
@KellenBricks
@KellenBricks Жыл бұрын
i use prisma for migrations only and write raw sql for all the queries. pgtyped helped me to type all the queries automatically. highly recommend using this setup.
@ranaakhil
@ranaakhil Жыл бұрын
Knex is actually the best middleground between low level SQL and query builders with features like migrations.
@fabh844
@fabh844 Жыл бұрын
Just came here after watching the codedamn video on prisma 😂😂😂😂😂
@naztar4323
@naztar4323 Жыл бұрын
Java Hibernate Is the Gold Standerd for ORM's Tbh
@naztar4323
@naztar4323 Жыл бұрын
@@maelstrom57 i agree , i been thinking about rewriting it in rust , or some thing like it but i dont know if i can do it
@IvanRandomDude
@IvanRandomDude Жыл бұрын
EF Core is superior
@awe_ayo
@awe_ayo Жыл бұрын
drizzle for the win
@FaisalAfroz
@FaisalAfroz Жыл бұрын
Best ORM is one and only that has not been mentioned in the video but will come with a new js framework.
@cameronblackwoodcode
@cameronblackwoodcode Жыл бұрын
Postgres via Supabase is the way
@tobiascornille
@tobiascornille Жыл бұрын
@Makl why?
@93minititan
@93minititan Жыл бұрын
Use Prisma with supabase, ezpz
@Helvanic
@Helvanic Жыл бұрын
Just use a type-safe query-builder like Kysely and avoid all the ORM issues.
@igalklebanov921
@igalklebanov921 11 ай бұрын
❤ from kysely.
React VS Svelte...10 Examples
8:35
Beyond Fireship
Рет қаралды 556 М.
Front-end web development is changing, quickly
3:43
Fireship
Рет қаралды 869 М.
Dad gives best memory keeper
01:00
Justin Flom
Рет қаралды 20 МЛН
What will he say ? 😱 #smarthome #cleaning #homecleaning #gadgets
01:00
Apple peeling hack
00:37
_vector_
Рет қаралды 52 МЛН
Is Drizzle Really Better Than Prisma?
20:15
Web Dev Simplified
Рет қаралды 79 М.
7 Database Paradigms
9:53
Fireship
Рет қаралды 1,6 МЛН
VSCode is Not Enough Anymore in 2024
3:21
Dev Panda
Рет қаралды 20 М.
DONT USE AN ORM | Prime Reacts
25:46
ThePrimeTime
Рет қаралды 227 М.
The World Depends on 60-Year-Old Code No One Knows Anymore
9:30
Coding with Dee
Рет қаралды 791 М.
Drizzle vs Prisma: Which ORM is right for YOU?
5:59
Kodaps Academy
Рет қаралды 6 М.
Never install locally
5:45
Coderized
Рет қаралды 1,8 МЛН
Migration Lesson: Don't Use Prisma | Prime Reacts
29:16
ThePrimeTime
Рет қаралды 152 М.
How I deploy serverless containers for free
6:33
Beyond Fireship
Рет қаралды 493 М.
PROOF JavaScript is a Multi-Threaded language
8:21
Beyond Fireship
Рет қаралды 277 М.
Dad gives best memory keeper
01:00
Justin Flom
Рет қаралды 20 МЛН