docs: Data mapper1762 (#2165)

* update README.md

* update README.md
This commit is contained in:
KyleSong30
2022-10-31 03:39:11 +11:00
committed by GitHub
parent 4cd8149502
commit 13cb2e8d48
+36 -4
View File
@@ -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
![alt text](./etc/data-mapper.png "Data Mapper")
## 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)
* [Objectrelational 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/)