mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-14 12:58:37 +00:00
+36
-4
@@ -3,21 +3,53 @@ title: Data Mapper
|
||||
category: Architectural
|
||||
language: en
|
||||
tags:
|
||||
- Decoupling
|
||||
- Decoupling
|
||||
---
|
||||
|
||||
## Intent
|
||||
A layer of mappers that moves data between objects and a database while keeping them independent of each other and the mapper itself
|
||||
|
||||
This layer consists of one or more mappers (or data access objects) that perform data transfer. The scope of mapper implementations varies.
|
||||
A generic mapper will handle many different domain entity types, a dedicated mapper will handle one or a few.
|
||||
|
||||
## Explanation
|
||||
|
||||
Real-world example
|
||||
|
||||
> When accessing web resources through a browser, there is generally no need to interact with the server directly;
|
||||
> the browser and the proxy server will complete the data acquisition operation, and the three will remain independent.
|
||||
|
||||
In plain words
|
||||
|
||||
> The data mapper will help complete the bi-directional transfer of persistence layer and in-memory data.
|
||||
|
||||
Wikipedia says
|
||||
|
||||
> A Data Mapper is a Data Access Layer that performs bidirectional transfer of data between a
|
||||
> persistent data store (often a relational database) and an in-memory data representation (the domain layer).
|
||||
|
||||
Programmatic example
|
||||
|
||||
## Class diagram
|
||||

|
||||
|
||||
## Applicability
|
||||
Use the Data Mapper in any of the following situations
|
||||
|
||||
* when you want to decouple data objects from DB access layer
|
||||
* when you want to decouple data objects from DB access layer
|
||||
* when you want to write multiple data retrieval/persistence implementations
|
||||
|
||||
## Credits
|
||||
## Known uses
|
||||
* [SqlSession.getMapper()](https://mybatis.org/mybatis-3/java-api.html)
|
||||
|
||||
* [Data Mapper](http://richard.jp.leguen.ca/tutoring/soen343-f2010/tutorials/implementing-data-mapper/)
|
||||
## Consequences
|
||||
|
||||
> Neatly mapped persistence layer data
|
||||
> Data model follows the single function principle
|
||||
|
||||
## Related patterns
|
||||
* [Active Record Pattern](https://en.wikipedia.org/wiki/Active_record_pattern)
|
||||
* [Object–relational Mapping](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping)
|
||||
|
||||
## Credits
|
||||
* [Data Mapper](http://richard.jp.leguen.ca/tutoring/soen343-f2010/tutorials/implementing-data-mapper/)
|
||||
Reference in New Issue
Block a user