《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

ModelMapper: 从对象到对象的映射库

  • 2012-11-26
  • 本文字数:795 字

    阅读完需:约 3 分钟

ModelMapper 是一个从对象到对象(object-to-object)的框架,能将 Java Bean(Pojo)对象从一种表现形式转化为另一种表现形式。它采用“通过约定来配置”的方式,自动匹配不同的对象映射,同时具备满足某些特殊需求的高级功能。这与.NET AutoMapper 库很类似(但不是直接移植)。

ModelMapper 能用更加紧凑的代码对 Java 对象进行映射,在更简单的情况下甚至可以实现零配置。它支持以下特性:

  • 基于名称的对象属性映射
  • 复制公开的、受保护的和私有的字段
  • 略过某些字段
  • 可用转换器来影响映射(如将字符串转换为小写)
  • 在不同类型的字段间进行映射(如将字符串转换为数字)
  • 采用不同的条件进行映射
  • 默认条件不充分时采用松散的映射策略
  • 对映射过程进行验证以确保所有字段都被处理
  • 对特殊情况下的映射过程进行完全可定制化的控制
  • Guice Spring 集成

在企业应用中,将对象从一种形式转换成另一种是非常普遍的模式。例如,某领域模型从数据库中加载,并需要在 GUI 上显示给用户。其原始数据库格式会包含大量用于生命周期的属性,而屏幕前的用户可能只关心其中的一两个字段。所以很多时候,用于数据库的 Pojo( JPA 实体)与用于 GUI 的 Pojo 是不同的。这正是 ModelMapper 试图解决的问题。一般来说,当信息在企业应用内的层之间发生改变时,就会发生对象转换。

其他会发生对象转换的场景包括:

  • 多个对象聚合成一个
  • 在已存在的对象中计算一些额外的元数据
  • 转换对象以便发送到外部系统中
  • 未定义的属性里赋予默认值
  • 通过某种方式来转换已有的属性(对象自映射)

ModelMapper 已经位于 Maven Central 中。更多信息请查看用户手册 Javadoc 。源代码可在 Github 上下载。

查看英文原文: ModelMapper: An Object To Object Mapping Library


感谢姚琪琳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-11-26 10:104113

评论

发布
暂无评论
发现更多内容

最近火热的web3到底是什么?

石云升

区块链 28天写作 12月日更 web3

架构实战营4期-模块3作业

木几丶

「架构实战营」

详细架构设计文档

Anlumina

#架构实战营

架构实战营:模块三作业

Geek_93ffb0

「架构实战营」

从人工到智能!百度AI开发者大会分论坛,探寻国球乒乓背后的AI之路

百度大脑

人工智能

元宇宙很好,但VR开发者不准备停留在这里

白洞计划

费用节省 50%,函数计算 FC 助力分众传媒降本增效

阿里巴巴云原生

阿里云 云原生 合作 函数计算FC 分众传媒

【架构实战营】模块三:知识点总结

wgl

「架构实战营」

一周信创舆情观察(12.20~12.26)

统小信uos

架构实战营 - 模块 3 - 作业

Pyel

「架构实战营」

Hoo研究院币 | 币海寻珠——加密行业即将到来的发售事件

区块链前沿News

加密货币 虎符 虎符交易所

一口气搞懂【Linux内存管理】,就靠这60张图、59个问题了

奔着腾讯去

内存泄露 内存管理 Linux Kenel 内存映射 内存池

深入理解一下Python中的面向对象编程

宇宙之一粟

Python 面向对象 12月日更

架构实战营模块三作业

lchx08

「架构实战营」

阿里云王志坤:强劲可靠、无处不在的云,为创新保驾护航

阿里云弹性计算

弹性计算 年度峰会

架构实战 模块三作业

mj4ever

架构实战

外包学生管理系统详细设计文档

糖糖学编程

架构实战营

瞰见 | 开源,会不会变成开源创业的焦油坑?

OpenTEKr

狄安瞰源

Golang中文件的基本操作

liuzhen007

Go 28天写作 Go 语言 12月日更

一年又要过去了!盘点2021年区块链的6个关键词

CECBC

LabVIEW图像增强算法(基础篇—5)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像增强算法

有趣的灵魂万里挑一:从智能座舱看汽车进化史

脑极体

VS Code 如何设置大小写转换快捷键

AlwaysBeta

vscode

学习总结 2021.12.30

mj4ever

学习笔记

百度飞桨EasyDL桌面版正式上线,没网也能训练AI!

百度大脑

人工智能

【架构实战营】模块三:命题作业

wgl

「架构实战营」

阿里巴巴超大规模 Kubernetes 基础设施运维体系揭秘

阿里巴巴云原生

阿里云 Serverless Kubernetes 云原生 ASI

引领人工智能技术自立自强 百度吴甜获评“首都最美巾帼奋斗者”

百度大脑

人工智能「

百度智能云发布零碳园区解决方案,助力实现双碳目标

百度大脑

人工智能

Git基础 |打tag

xcbeyond

git 28天写作 tag 12月日更

第三周学习总结

糖糖学编程

架构实战营

ModelMapper:从对象到对象的映射库_Java_Kostis Kapelonis_InfoQ精选文章