Aggregates, Entities & Value Objects | Modeling Rules of Thumb + Modeling Steps

  Рет қаралды 50,814

Amichai Mantinband

Amichai Mantinband

Күн бұрын

In today's video, we'll cover everything you need to know to get started with Aggregates Entities and Value Objects.
We'll also cover some rules of thumb and good questions to ask while modeling your domain.
Become a Patron & get source code access: / amantinband
Follow me on 'em socials:
Twitter: / amantinband
LinkedIn: / amantinband
GitHub: github.com/amantinband
#ddd #domaindrivendesign #dotnet

Пікірлер: 66
@liordagan5098
@liordagan5098 Жыл бұрын
Thanks!
@amantinband
@amantinband Жыл бұрын
OMG thank you so much! I really really appreciate it, I want you to know that your donation means the word to me. I love you, and I'll see you at dinner 😘
@amantinband
@amantinband Жыл бұрын
Hey everyone! Just wanted to apologize in advance for the sound quality, had it misconfigured ☹. It should improve significantly next Monday 🤞
@MilanJovanovicTech
@MilanJovanovicTech Жыл бұрын
I was about to send you a PM, but you hear it 😁
@PhantomAxxaxxin
@PhantomAxxaxxin Жыл бұрын
Was gonna say, lol. For having such a nice mic it sure sounds like a potato.
@ChrisAthanas
@ChrisAthanas 9 ай бұрын
Yes this video deserves to be remade with improved audio bc the content is valuable
@amantinband
@amantinband Жыл бұрын
Curious to hear what you think! Do you have experience with modeling a domain? Do you have a different approach? Do you have different rules of thumb? Are you new to DDD? Do you have any questions regarding any of concepts?
@silvertek
@silvertek Жыл бұрын
I cant wait to get back into the code! The last few videos have been great to step back and look at processes from a higher level. I'm hungry for more BuberDinner.
@amantinband
@amantinband Жыл бұрын
Same here. Next week we are coming back to the code in full force 💪🏼
@sushilb7994
@sushilb7994 Жыл бұрын
Couldn't agree more... Last few videos have set the stage to deep dive into DDD 💪
@user-pe6cg1bv1q
@user-pe6cg1bv1q Жыл бұрын
Awesome stuff! Keep the DDD concepts coming :)
@amanamudoaka8020
@amanamudoaka8020 Жыл бұрын
The saviour is here. I completely get it. But we need a video for a full usage of most of the concepts. Well done teacher.
@amantinband
@amantinband Жыл бұрын
No worries we’ll cover everything with practical examples
@manuelknorle1457
@manuelknorle1457 Жыл бұрын
Once again an extremely good video. Didactically on world class level, even with bad sound. 😛
@amantinband
@amantinband Жыл бұрын
Haha thanks Manuel 😅
@danil3700
@danil3700 Жыл бұрын
Just today I was looking for information about aggregates, thanks! Can't wait next video
@amantinband
@amantinband Жыл бұрын
Awesome to hear. Are you modeling a domain or onboarding to an existing project?
@danil3700
@danil3700 Жыл бұрын
@@amantinband I have a project at the university and I want to model it using DDD. I've looked at a lot of information about this, but your videos are awesome. Structured, useful information, and even with project examples
@amantinband
@amantinband Жыл бұрын
Oh cool! Next Monday’s video is going to be a practical example I think you’ll find useful as well
@alexkovanev1425
@alexkovanev1425 Жыл бұрын
Great and simple explanation
@amantinband
@amantinband Жыл бұрын
Thanks Alex 🙏🏼
@lilililliilil
@lilililliilil Жыл бұрын
ty for the video man!!! Wish u best of luck ❤
@amantinband
@amantinband Жыл бұрын
Glad you liked it 😁
@MilanJovanovicTech
@MilanJovanovicTech Жыл бұрын
Excellent high level explanation of these concepts. When are you going to show us the code? 🔥
@amantinband
@amantinband Жыл бұрын
Next week 🤙🏼
@MilanJovanovicTech
@MilanJovanovicTech Жыл бұрын
@@amantinband Awesome, can't wait
@Adrianvdh
@Adrianvdh 3 ай бұрын
I've watched this video about 5 times now :)
@ibrahimkoz1983
@ibrahimkoz1983 Жыл бұрын
You're amazing.
@davemasters
@davemasters Жыл бұрын
Great video, curious to see how you combine DDD aggregates/entities/value objects with EF
@amantinband
@amantinband Жыл бұрын
I struggled and learned a lot bending EF for DDD. There is a lot to talk about and practically no advanced examples available so you can expect some deep dives 👍🏼
@davemasters
@davemasters Жыл бұрын
@@amantinband That is the same as my experience, and yes, there really is not much material out there for it. But EF core has come along way in recent years allowing for constructors, automatic mapping to encapsulated backing fields, 'OwnsOne/OwnsMany' etc. Before these features the only way was to have a separate data model from the domain model which adds massive overhead.
@amantinband
@amantinband Жыл бұрын
Yeah exactly. It’s still not perfect IMO but definitely something we can work with!
@pilotboba
@pilotboba Жыл бұрын
Vladimir Khorikov has a great course on Pluralsight about this topic.
@davemasters
@davemasters Жыл бұрын
@@pilotboba thanks, will check that out!
@siemen3539
@siemen3539 Жыл бұрын
Would love to see a video covering DDD with a framework like Spring Boot! I would be curious in particular as to how you would handle the separation of domain logic from persistence/framework code.
@amantinband
@amantinband Жыл бұрын
I’m not familiar with spring boot, but the application we’re building out uses ASP.NET, and the principles we’ll use for separating logic between the layers should stay true regardless of the framework. There might be specific Java/persistence framework limitations, of course, but generally speaking, you should be able to apply what we’ll cover regardless of the framework 🙂
@jodainemoore8300
@jodainemoore8300 2 ай бұрын
Could you do a Video with DDD Domain + Strategy Pattern please?
@davidjiang7929
@davidjiang7929 7 ай бұрын
Is there a full walkthrough tutorial on Buber Dinner? Would love to code along to understand the thought process better!
@alfonsdeda8912
@alfonsdeda8912 24 күн бұрын
Great video! I have one question: In repository pattern if i have for example an aggregate root Post and one entity Comment that can't exist without a post, the only repository that i should create is PostRepository? Does this repository handle all operations on comments too? Does it make sense to have a method that only retrieve comment informations or have at least the postName or postId without other post's informationt, or should i return always the aggregate? CommentRepository doesn't make sense right? Thanks in advance.
@OmprakashYadavIIT
@OmprakashYadavIIT Жыл бұрын
Awesome
@amantinband
@amantinband Жыл бұрын
Thanks Omprakash 🤙🏼
@tiagorodrigues6284
@tiagorodrigues6284 Жыл бұрын
stupid question, if we only have private setters does that means that mappers and deserializers wont work directly?
@picious
@picious Жыл бұрын
Thank you for your videos,, I just wanted to share with you that your voice is distorted - also in your previous video was the same. You changed something?
@amantinband
@amantinband Жыл бұрын
Yeah sorry about that, had it misconfigured. Next video should be fixed 🤞
@rededu5356
@rededu5356 Жыл бұрын
Good day sir, why is the Price an object? And when to decide if it should be an object or primitive type for properties? more power to you sir. thanks
@Huholoman
@Huholoman Жыл бұрын
What if i make DinnerAggregateRoot and DinnerReservationsAggregateRoot with same id or with relation by having DinnerReservationsId in DinnerAggregateRoot?
@PaulSebastianM
@PaulSebastianM Жыл бұрын
The aggregate modeling steps are misleading and/or confusing. Not all entities have to be defined as aggregates. Why merge different aggregates into one aggregate? Aggregates have their own invariants, so do entities, but using these terms interchangeably leads to confusion. What does merging them achieve? Did you mean merge different *entities* to form aggregates in order to enforce a new aggregate's invariants (e.g. move Reservation *entity* inside the Dinner entity to form a Dinner aggregate that enforces invariants that use both these entities)?
@amantinband
@amantinband Жыл бұрын
Perhaps I could have been clearer on this topic. The steps I suggest in the video are: 1. Treat each entity as if it is an Aggregate Root 2. Merge Aggregates when there are constraints. Constraints can be: 1. Invariants 2. Eventual consistency cannot be tolerated Does that make sense?
@kenrazo2533
@kenrazo2533 Жыл бұрын
learn a lot mate! woohooo
@amantinband
@amantinband Жыл бұрын
Thanks, Ken 🫶
@David-rz4vc
@David-rz4vc 5 ай бұрын
can u have a one to many from one aggregates to another? or many to many
@amantinband
@amantinband 4 ай бұрын
Yes, but aggregates only reference other aggregates by ID
@botyironcastle
@botyironcastle Ай бұрын
what if you have huge data like 100000000comments in Post object. I don't think you can init a domain object with that much... looks useless to me when dealing with large chunks of data. Thoughts?
@Petoj87
@Petoj87 Жыл бұрын
Love the video but the sound is off
@janhendrikschreier
@janhendrikschreier Жыл бұрын
hi Amichai, I assume you made a bunch of videos where the clipping of your audio happend and you publish this videos now on a weekly basis. If this is the case, please ignore this comment. If not: you're still clipping :/
@amantinband
@amantinband Жыл бұрын
Yeah, too bad I didn’t notice before. Sorry for that 🙏🏼 Next week the audio should improve
@PaulSebastianM
@PaulSebastianM Жыл бұрын
When panning, try being less "instant". It's OK when you do it because you anticipate it, but for an audience it's jarring and unexpected and makes you loose your focus for a second while you readjust. It's worse when the image is highly zoomed in and the main content that you should be focused on is basically covering the full screen.
@amantinband
@amantinband Жыл бұрын
That’s great feedback. Thanks Paul 🙏🏼
@PaulSebastianM
@PaulSebastianM Жыл бұрын
@@amantinband Thanks for listening. Keep improving!
@PaulSebastianM
@PaulSebastianM Жыл бұрын
You can reference other aggregates by a reference to the aggregate root, not just its ID (in the storage model you can store just the other aggregate's ID). I think most examples use IDs but technically, isn't holding a memory reference to the AR safe? Because you're just holding a reference to the transaction boundary of that AR, and you can only modify it through its public interface. Right?
@amantinband
@amantinband Жыл бұрын
Can you? Yes. Is it recommended? No. Check out this article by vaughn vernon where he talks about this issue: www.dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf
@MohamedAbdulRaouf
@MohamedAbdulRaouf 7 ай бұрын
I stand with Palstine
@gretavanskeet2974
@gretavanskeet2974 7 ай бұрын
Ive never seen someone with such a nice mic have such horrible audio.
@clashclan4739
@clashclan4739 Жыл бұрын
The more I learn about DDD, the more it don't make much sense. Only theoretically it is good
Smart Sigma Kid #funny #sigma #comedy
00:19
CRAZY GREAPA
Рет қаралды 19 МЛН
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 114 МЛН
Which one of them is cooler?😎 @potapova_blog
00:45
Filaretiki
Рет қаралды 10 МЛН
🍕Пиццерия FNAF в реальной жизни #shorts
00:41
Clean Architecture vs Domain-Driven Design (DDD) - Understand the Difference
11:26
Why I Quit the Scrum Alliance
7:58
The Passionate Programmer
Рет қаралды 8 М.
Domain Driven Design: What You Need To Know
8:42
Alex Hyett
Рет қаралды 98 М.
Dockerize Your .NET Application in 5 Minutes!
7:42
Amichai Mantinband
Рет қаралды 7 М.
Exceptions are evil. This is what I do instead.
24:41
Amichai Mantinband
Рет қаралды 17 М.
Microservices with Databases can be challenging...
20:52
Software Developer Diaries
Рет қаралды 16 М.
Mastering DDD Aggregate Modeling With THESE 3 Steps
17:26
Codewrinkles
Рет қаралды 10 М.
How To Unlock Your iphone With Your Voice
0:34
요루퐁 yorupong
Рет қаралды 26 МЛН
Gizli Apple Watch Özelliği😱
0:14
Safak Novruz
Рет қаралды 3,1 МЛН
Мечта Каждого Геймера
0:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 1,7 МЛН
#miniphone
0:16
Miniphone
Рет қаралды 3,4 МЛН