写点什么

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:104136

评论

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

产业互联网时代的数字化转型与创新

CECBC

网络抓包实战06——灵异事件的始作俑者:Reset数据包

青春不可负,生活不可欺

Java内存模型

wzh

Java JVM happens-before 并发 Java内存模型

Java线程状态与状态间的切换

wzh

Java 线程 JVM 操作系统 并发

[译] R8 优化:方法的 Outlining 优化

Antway

6月日更

从渗透测试小白到网络安全大佬的成长之路

学神来啦

Linux 运维 网络安全 渗透测试

ES6 迭代器简述

编程三昧

JavaScript 大前端 ES6 迭代器

算法有救了!GitHub上神仙项目手把手带你刷算法,Star数已破110k

Java架构师迁哥

鉴释×CSDN丨国内外操作系统生态差异在哪?

鉴释

操作系统

新华三商用终端新品全系入市,重塑办公极致体验

科技热闻

值得收藏的15个JavaScript语句

devpoint

JavaScript array 6月日更

Redis入门五:主从复制

打工人!

redis 主从复制 6月日更

网络抓包实战05——深入浅出连接关闭

青春不可负,生活不可欺

指挥中心情指勤一体化解决方案,河北公安情指勤一体化建设

区块链如何赋能智慧城市

CECBC

dubbogo 社区负责人于雨说

apache/dubbo-go

dubbo dubbo-go dubbogo

网络抓包实战04——深入浅出连接建立

青春不可负,生活不可欺

Java的函数式接口

中原银行

Java 函数式接口 中原银行

英特尔宋继强:异构计算的关键一环,先进封装已经走向前台

E科讯

信息安全与网络安全的关系

网络安全学海

程序员 网络安全 安全 信息安全 渗透测试

知乎上线1小时,5w浏览量被下架的JVM全解笔记,内容太强大

Java架构师迁哥

【MindSpore有奖活动】资讯内容宝藏多,编译安装试一波!

Geek_6cdeb6

网络攻防学习笔记 Day53

穿过生命散发芬芳

网络攻防 6月日更

定点数与浮点数表示

若尘

浮点数 计算机组成原理 6月日更

Jenkins 如何与 Kubernetes 集群的 Tekton Pipeline 交互?

张晓辉

Kubernetes 云原生 jenkins Tekton CI/CD

网络抓包实战03——TCP/IP协议栈:数据包如何穿越各层协议

青春不可负,生活不可欺

虚拟货币监管再加码:央行约谈部分金融机构 要求切断支付链路

CECBC

5分钟速读之Rust权威指南(二十八)RefCell<T>

wzx

rust

一文带你了解什么是HTTP协议

网络安全学海

网络安全 安全 信息安全 HTTP 渗透测试

“半监督”、“自监督”怎么用?| 算法深度剖析与实战分享

网易易盾技术团队

AI 算法 算法实践 实践案例 深度半监督

浅谈B端产品的表单元素设计

LigaAI

产品经理 UI 产品设计与思考

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