Context
In a recent project, I separated domain models from persistence entities (distinct POJOs for each). The goal is to keep database concerns out of the domain layer so the domain remains clean, testable, and persistence-agnostic. On the entity side, we can still leverage the essential JPA annotations that make it straightforward and productive.
I used MapStruct to map between domain and entity POJOs with minimal boilerplate. Because MapStruct traverses the object graph via getters/setters, it also makes it easy to (re)establish or reset persistence relationships as needed during mapping.
This separation—distinct domain and entity models—continues to prove its value: it enforces clear boundaries, reduces coupling to JPA, and simplifies testing. I’ll publish a small demo app to illustrate this approach and the mapping patterns.
Why this architecture helps (at a glance)
-
Clean domain: No JPA annotations or persistence abstractions in domain code.
-
Focused entities: JPA annotations live only where they belong—on the persistence side.
-
Easy mapping: MapStruct handles object graph traversal and relationship wiring with little code.
-
Testability: Domain tests don’t require JPA or database setup.
-
Flexibility: Freedom to evolve persistence or domain independently.
No comments:
Post a Comment