I tried 8 different Postgres ORMs

Sdílet
Vložit
  • čas přidán 24. 05. 2023
  • 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/courses/nextjs/
    - pg github.com/brianc/node-postgres
    - postgres.js github.com/porsager/postgres
    - knex github.com/knex/knex
    - kysely github.com/kysely-org/kysely
    - sequelize github.com/sequelize/sequelize
    - typeorm github.com/typeorm/typeorm
    - prisma github.com/prisma/prisma
    - drizzle github.com/drizzle-team/drizz...

Komentáře • 695

  • @cjgj
    @cjgj Před 11 měsíci +1419

    The real ORM is the friends we made along the way -- Our Real Mates

    • @NexusGamingRadical
      @NexusGamingRadical Před 11 měsíci +32

      Nice sql comment at the end there. Very explanatory.

    • @peterszarvas94
      @peterszarvas94 Před 11 měsíci +19

      It's about the vulnerabilities we made along the way

    • @VikashXman
      @VikashXman Před 11 měsíci +3

      eval(node run test)

    • @Y2Kvids
      @Y2Kvids Před 9 měsíci +3

      And Tables We Dropped

    • @ZM-dm3jg
      @ZM-dm3jg Před 9 měsíci +1

      I made friends with ChatGPT along the way

  • @hanifali3396
    @hanifali3396 Před 11 měsíci +619

    0:20 (S-Q-L), 0:31 (Squeal), 0:52 (Sequel) He pronounced SQL all three different ways so everyone is happy 😂

  • @tyu3456
    @tyu3456 Před 11 měsíci +366

    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 Před 11 měsíci +28

      yep, really a shame that mikro orm is not well known, its superb

    • @nifalconi
      @nifalconi Před 11 měsíci +26

      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_ Před 11 měsíci +4

      I agree! And MikroORM works great with MongoDB too.

    • @bedirhancelayir3295
      @bedirhancelayir3295 Před 11 měsíci +1

      Definetely agree

    • @alexnezhynsky9707
      @alexnezhynsky9707 Před 11 měsíci +4

      Yes, B4nan is a superhero

  • @dbreen12
    @dbreen12 Před 11 měsíci +269

    The timing of this video is impeccable. Been spending the last few days looking into these ORMs

    • @Showmatic
      @Showmatic Před 11 měsíci +7

      same, and I'm learning towards drizzle

    • @pomberorajy
      @pomberorajy Před 11 měsíci

      same x2

    • @cristinel1
      @cristinel1 Před 11 měsíci

      Same x3

    • @er3n_
      @er3n_ Před 11 měsíci +5

      just write SQL

    • @LuisSierra42
      @LuisSierra42 Před 11 měsíci

      Been using sequelize and typeorm recently

  • @elitalpa
    @elitalpa Před 2 měsíci +21

    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 Před měsícem

      +1, need those youtube chapters

  • @petrsehnal7990
    @petrsehnal7990 Před 11 měsíci +26

    Breaking world record for most useful information per second of video each time you post someting. Respect, Sir!

  • @clingyking2774
    @clingyking2774 Před 11 měsíci +7

    This guy has the most useful content, without wasting any time.

  • @MateHomolya
    @MateHomolya Před 11 měsíci +8

    This video is so well timed, I was literally transitioning from Firestore to Postgres database with a project just now.

  • @angmathew4377
    @angmathew4377 Před 11 měsíci

    I was less inclined to watch this earlier but, hey man, you rocks. Lots of clear and concise stuff in the video.

  • @TechDiffuse
    @TechDiffuse Před 11 měsíci

    Awesome job Jeff. Thanks for creating such a concise and entertaining video.

  • @ileies
    @ileies Před 9 měsíci +3

    Hours of research without real outcome and then one video and I know what to choose.
    You're my favorite CZcamsr for a reason. 😋

  • @mileselam641
    @mileselam641 Před 10 měsíci +20

    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.

  • @agammore
    @agammore Před 11 měsíci

    Awesome video! And amazing that you're giving a free consultation, people should flock for that!

  • @chrisalexthomas
    @chrisalexthomas Před 11 měsíci

    lol, the ending was perfect :D well done Mr Fireship

  • @kai12626
    @kai12626 Před 11 měsíci

    Thank you. Perfect timing, that exactly what i'm looking for.

  • @bugs389
    @bugs389 Před 11 měsíci +1

    Great video. I'd enjoy an overview of ORMs in other languages too, such as SqlAlchemy, Entity Framework, etc.

  • @tenthlegionstudios1343
    @tenthlegionstudios1343 Před 11 měsíci +6

    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!

  • @Mixesha001
    @Mixesha001 Před 11 měsíci +19

    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 Před 11 měsíci +1

      I have been looking into MikroORM and confused why it doesn't get much attention and review by the community.

  • @ruaidhrilumsden
    @ruaidhrilumsden Před 11 měsíci +55

    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 Před 11 měsíci +13

      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 Před 11 měsíci +5

      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 Před 11 měsíci +1

      @@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 Před 11 měsíci +11

      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 Před 11 měsíci +5

      @@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😎

  • @PetrKubes1997
    @PetrKubes1997 Před 11 měsíci +4

    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.

  • @vorandrew
    @vorandrew Před 11 měsíci +1

    Absolutely love intro!!!!

  • @cm3462
    @cm3462 Před 11 měsíci

    Thank you man. This is really helpful.

  • @Nyasha_Nziboi
    @Nyasha_Nziboi Před 11 měsíci +1

    Thank you so much for this was struggling to choose an ORM to use till now

  • @alejandrombc
    @alejandrombc Před 11 měsíci +6

    A video about correct ways to hande migrations for multiple teams would be very handy!

    • @rajeevkl6966
      @rajeevkl6966 Před 11 měsíci +3

      use rails/laravel/django
      everyone can do their own migrations & it rarely conflicts

  • @randsonalves5978
    @randsonalves5978 Před 9 měsíci

    this is gonna be very useful for my typescript api, living and leaning...

  • @stevenhe3462
    @stevenhe3462 Před 11 měsíci +11

    Rails, Django, Laravel, and Phoenix developers:
    Yay!! We don't have to deal with this JavaScript madness.

  • @jntaca
    @jntaca Před 11 měsíci +2

    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.

  • @DaliborCarapic
    @DaliborCarapic Před 11 měsíci +1

    Love the ending :)

  • @jordanebelanger3918
    @jordanebelanger3918 Před 11 měsíci +2

    When using pg, run your migrations and then use schemats to dynamically generate typescript types from the db itself for great type safety.

  • @rounaksen1683
    @rounaksen1683 Před 11 měsíci +1

    Man That Ending !!! Super

  • @cesarayalavargas3623
    @cesarayalavargas3623 Před 11 měsíci +1

    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

  • @letstalkdev
    @letstalkdev Před 11 měsíci

    First 20 seconds of this video, the story of my life! :D
    Great job making these videos fun, so we can all have a bit of a laugh and not take ourselves too seriously, especially when it comes to the technology stack used.
    I've also made a video on this topic on my channel recently.

  • @changwufei5
    @changwufei5 Před 11 měsíci

    sequelize has been my go to for small project for about 5 years.

  • @razdingz
    @razdingz Před 11 měsíci +2

    bests one mentioned at 9:45 ~ saved you some time !

  • @destroyer-tz2mk
    @destroyer-tz2mk Před 11 měsíci +46

    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 Před 11 měsíci +9

      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 Před 11 měsíci +8

      @@Ke5o it was so scuffed that they need to re-write most of the features when releasing v7

  • @isaiahkahler5429
    @isaiahkahler5429 Před 11 měsíci +7

    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.

  • @tdug1991
    @tdug1991 Před 10 měsíci +3

    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 Před 9 měsíci

      Quarkus reactive is pretty sweet. But for sheer performance Go and Elixir libraries seem unbeatable.

  • @sarmadrafique426
    @sarmadrafique426 Před 11 měsíci +8

    Drizzle for the next Project.

  • @fr1tzw4lt3r
    @fr1tzw4lt3r Před 9 měsíci +2

    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 Před 9 měsíci +1

      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 Před 4 měsíci

      damn. I just learned about PgTyped, thanks to this comment. it is a gods gift.

  • @Kingromstar
    @Kingromstar Před 11 měsíci +78

    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 Před 11 měsíci +25

      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 Před 11 měsíci +5

      @@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 Před 11 měsíci +11

      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 Před 11 měsíci +4

      prisma won't scale up

    • @clingyking2774
      @clingyking2774 Před 11 měsíci +4

      TypeORM is the only ORM that actually makes sense because Java uses a similar pattern and Java is Holy.

  • @asimami
    @asimami Před 11 měsíci

    I love the "Data Suppository". :D

  • @jugurtha292
    @jugurtha292 Před 11 měsíci +98

    I prefer writing raw sql queries. Orm tend to make simple things simpler and hard things harder

    • @igalklebanov921
      @igalklebanov921 Před 11 měsíci +1

      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 Před 11 měsíci +17

      I agree with you. Also debugging raw queries is much easier as you copy the sql string and execute it manually.

    • @MinibossMakaque
      @MinibossMakaque Před 11 měsíci +20

      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 Před 11 měsíci +7

      @@MinibossMakaque I will never fucking understand the insanity of ORM. Literally makes everything worse, a useless abstraction.

    • @LuisSierra42
      @LuisSierra42 Před 11 měsíci

      Except when you have tons and tons of complex queries and that sometimes occupy and entire file

  • @rushtothemax76
    @rushtothemax76 Před 11 měsíci +12

    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 Před 11 měsíci

      prisma won't scale up

    • @nithin3476
      @nithin3476 Před 10 měsíci

      @@ooogabooga5111 hey what about drizzle

    • @IDOLIKIofficial
      @IDOLIKIofficial Před 9 měsíci +2

      @@ooogabooga5111 How is that so? I use prisma on applications with 3M MAU. Loads pretty fast for everyone

  • @FalioV
    @FalioV Před 11 měsíci

    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.

  • @AtiqSamtia
    @AtiqSamtia Před 10 měsíci +4

    Nice to have Eloquent ORM baked right in the Laravel Framework providing all of these and more features out of the box.

  • @dylan8389
    @dylan8389 Před 11 měsíci

    I’m interested in buying your full Next 13 course, just wondering, does it teach Next 13 for those that already know Next 12 and below, or is it for people completely new to next. I am the latter and found a lot of tutorials tend to assume your coming from previous versions of next so am feeling a bit lost. Thanks

  • @eliya.c
    @eliya.c Před 11 měsíci +8

    The issues that you've mentioned using raw SQL queries can be solved by using SafeQL. Zero abstractions, zero runtime code.

    • @RasmusSchultz
      @RasmusSchultz Před 11 měsíci +1

      Yes, please. The best ORM is no ORM 🙂👍

  • @BellCube
    @BellCube Před 11 měsíci +1

    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!

  • @megaxlrful
    @megaxlrful Před 11 měsíci

    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.

  • @MAC0071234
    @MAC0071234 Před 11 měsíci +12

    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 Před 11 měsíci +2

      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 Před 11 měsíci

      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 Před 11 měsíci +3

      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.

  • @mrgalaxy396
    @mrgalaxy396 Před 11 měsíci

    That snoop dogg line was absolute gold.

  • @sibabratswain4557
    @sibabratswain4557 Před 8 měsíci

    I worked extensively in one of the ORM that’s Eloquent which Laravel uses which is a PHP framework

  • @miko999x
    @miko999x Před 11 měsíci

    that clifhanger man, still waiting for the final result :D :D lol

  • @RaphaelFellowes
    @RaphaelFellowes Před 11 měsíci +2

    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.

  • @mjdryden
    @mjdryden Před 9 měsíci +6

    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.

  • @tj_mora
    @tj_mora Před 11 měsíci +6

    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 Před 11 měsíci +3

      Supabase is a normal Postgress db. You can use any orm you want with it

    • @tj_mora
      @tj_mora Před 11 měsíci +1

      @@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 CZcams 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.

    • @IlllIlIlllIIIllIl
      @IlllIlIlllIIIllIl Před 11 měsíci

      oh my god ..mongodb..........

  • @TheHTMLCode
    @TheHTMLCode Před 11 měsíci

    I really wish you mentioned joist, it’s TS backed and has facebooks data loader baked in at its core, allowing you to bundle similar queries together each event loop tick to reduce amount of queries you make to the db!

  • @leonhma
    @leonhma Před 11 měsíci

    just what i needed

  • @carloss3028
    @carloss3028 Před 5 měsíci +2

    Long live typesafe query builders (aka Kysley and Drizzle ORM)

  • @ekoprasetyo3999
    @ekoprasetyo3999 Před 11 měsíci

    Been using sequelize, and typeorm and typeorm is the most comfortable to me

  • @KevinVandyTech
    @KevinVandyTech Před 11 měsíci +1

    Joist is also interesting. It really focusses on great Typescript and lazy loading support while also automatically solving n+1 problems.

  • @igalklebanov921
    @igalklebanov921 Před 11 měsíci +1

    ❤ from Kysely.

  • @VGDGF
    @VGDGF Před 11 měsíci +22

    After experience with most of orms, Objection has the best developer experience with great performance

    • @igalklebanov921
      @igalklebanov921 Před 11 měsíci +3

      Have you tried Kysely? koskimas is the author behind both of them. :)

  • @DavidThorpe
    @DavidThorpe Před 11 měsíci

    I can just tell you are a boyscast listener by some of your phrases and I love it.

  • @blambillotte
    @blambillotte Před 9 měsíci +1

    “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

  • @john_smith281
    @john_smith281 Před 11 měsíci +11

    Using intellij sql intellisense in the code is way better than every orm can ever been.

  • @DomskiPlays
    @DomskiPlays Před 11 měsíci

    Lol the first bell curve is literally me right now. I'm heading down the other side.

  • @Bobobratwurscht
    @Bobobratwurscht Před 11 měsíci

    I personally love supabase‘s approach best - you have a GUI to create and update tables or columns

  • @charlesbcraig
    @charlesbcraig Před 11 měsíci +2

    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.

  • @saadabbasi2063
    @saadabbasi2063 Před 9 měsíci

    Jeff And Ozzyman are my most favourite Australians ❤️

  • @AbderrahmanFodili
    @AbderrahmanFodili Před 11 měsíci +5

    being a laravel developer feels like a ghoast or a stranger when you watch these videos

  • @omomer3506
    @omomer3506 Před 11 měsíci

    Lool man really knows his audience... also was that knex huge security problem patched

  • @dipupoawe9318
    @dipupoawe9318 Před 11 měsíci

    drizzle for the win

  • @supermike6519
    @supermike6519 Před 11 měsíci

    LOOOOVE Prisma!

  • @as-qh1qq
    @as-qh1qq Před 11 měsíci

    That @Entity based schema defining is also done in Android Room Db

  • @shmuel-k
    @shmuel-k Před 11 měsíci

    Great troll ending. Love it.

  • @ZamirMubashir
    @ZamirMubashir Před 11 měsíci

    Laravel's built in ORM, Eloquent is pretty good too!

  • @TheBadFred
    @TheBadFred Před 11 měsíci

    Is the one and only .... that works for you best !

  • @IbrahimKwakuDuah
    @IbrahimKwakuDuah Před 10 měsíci

    Entity framework + LINQ, saves you a ton

  • @blueghost512
    @blueghost512 Před 11 měsíci

    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 Před 10 měsíci

      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.

  • @mieszkogulinski168
    @mieszkogulinski168 Před měsícem

    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

  • @kaioneal6160
    @kaioneal6160 Před 11 měsíci

    Hello!!!
    What do you think of the fairly new Typescript ORM DeepKit.
    Also could you benchmark the performance of these Typescript ORM??? 🙏

  • @Marcos-zx6ey
    @Marcos-zx6ey Před 11 měsíci

    When the nextjs 13 course is ready, please add it to udemy too

  • @WolfPhoenix0
    @WolfPhoenix0 Před 11 měsíci

    I'm convinced this is the kind of stuff Fireship does for fun when he's bored.

  • @HeckslerGaming-pi7sy
    @HeckslerGaming-pi7sy Před 2 měsíci

    i knew that one was the best! i told yall

  • @gavinmasterson2242
    @gavinmasterson2242 Před 11 měsíci +2

    "With great abstraction, comes great dependency."
    - Uncle Ben

  • @vincentverdugo
    @vincentverdugo Před 11 měsíci

    DTD lmfao, you are the funniest guy in CS

  • @lebranding
    @lebranding Před 11 měsíci +5

    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 Před 11 měsíci

      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.

  • @iambor1393
    @iambor1393 Před 9 měsíci +4

    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 Před 8 měsíci

      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 Před 7 měsíci

      @@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.

  • @ironhunter2219
    @ironhunter2219 Před 11 měsíci

    Which one would you guys recommend if I am planning to connect to multiple different user defined database during runtime?

  • @android_paranoid
    @android_paranoid Před 11 měsíci

    Now you owe us a dedicated MikroORM video.

  • @pasizdobrekuce
    @pasizdobrekuce Před 8 měsíci

    Hey Knex, Eloquent says "Hi" .👋

  • @reymarkandog1441
    @reymarkandog1441 Před 11 měsíci

    Might check Mikro-orm as well.

  • @ReinPetersen
    @ReinPetersen Před 9 měsíci +4

    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?

  • @noname78520
    @noname78520 Před 11 měsíci

    Great! make a video about F# or EF Core

  • @Helvanic
    @Helvanic Před 8 měsíci +2

    Just use a type-safe query-builder like Kysely and avoid all the ORM issues.

  • @patronspatron7681
    @patronspatron7681 Před 9 měsíci

    7:39 I too need a Data Suppository after every client job I do.

  • @AndreasBeder
    @AndreasBeder Před 11 měsíci +3

    I am quite happy with Prisma. They did an amazing job.

    • @neutralitat2570
      @neutralitat2570 Před 11 měsíci

      Prisma is awesome while you’re not using geometry types 😢 also migrations is still a bit vague

  • @agcodes
    @agcodes Před 11 měsíci +10

    prisma is the GOATEST

  • @jtcp27031
    @jtcp27031 Před 11 měsíci

    I've been working with sequelize for quite some time now and I use it the most with typescript projects. It is really not that difficult to use with typescript or JavaScript and the only real disadvantage I find in it is that the documentation is not that useful at times. So I just read the code directly from the module