Comments (3)
I found answer in IDDD book on page 185.
It allows to identify entities with strategy of 'late identity assignment', before main identity is assigned.
It's VO-like equals. Especially useful in Sets.
from iddd_samples.
@gt4dev No. It's because the tenantId
and productId
are a composite id, but not held as one. In a SaaS with multiple tenants all entities must be "striped" with the tenantId
. They are separated so the tenant is clearly identified and can be queried on its own.
from iddd_samples.
I know, it's just a sample but
as identity is top important in entities let me ask sth.
Generalizing IDDD sample code:
When I 1st time saw Thing
with ThingId
then I thought that ThingId
is just id of thing [common sense]
But it's not (as ID needs TenantId
)
From my PoV clearer would be [in saasovation context]
- either create VO
ThingId
- which hides all inner elements: id of particular thing + all striping id-s [tenant, product ...] etc - or rename
ThingId
to sth likeThingRawId
orThingUnstripedId
- to explicitly express in name that it's not real id
What do think you about it, especially point 1?
IMO with "1"
- model [and code] is simpler
- still you can do all searches for "things" by tenant etc. as is done in current IDDD sample
It's even more cleared when ID is more complex [like in egBacklogItem
where ID is build from 3 IDs].
BTW
It's late answer, but in the meantime I've been sharpening my DDD skills ;]
Doing study notes https://github.com/gt4dev/study-notes
Your and Evans books are big big changers. Thanks!
from iddd_samples.
Related Issues (20)
- What's the point of com.saasovation.identityaccess.application.command? HOT 1
- Reference for functional programming
- Can't enable Mysql in EventStoreProvider HOT 1
- [question] implicit dependency from iddd_agilepm to iddd_identityaccess HOT 1
- Store aggregates: mongodb or postgres json
- Why didn't handle the situation that the user doesn't have the role
- Getting Peer not authenticated error when I'm trying to run gradlew build HOT 1
- Where is the aggregate root? HOT 1
- sprint.commit vs. backlogItem.commitTo HOT 5
- Why do some contexts contain port & adapter modules and others don't? HOT 3
- A duplicated tracker is created when retrying ProductDiscussionRequest HOT 2
- Build fails because of the version of tools
- The setup script fails
- Updating multiple aggregates in the same transaction? HOT 3
- Post on a closed discussion or closed forum
- How to use ValidationNotificationHandler HOT 1
- State in domain services HOT 3
- Limiting the modification of one aggregate per transaction HOT 2
- isClosed() considered to be true invariant or not? HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iddd_samples.