写点什么

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

评论

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

微信朋友圈为什么没有阅读数?

彭宏豪95

微信 产品 产品设计

回"疫"录(3):让人怀念的普通一天

小天同学

疫情 回忆录 现实纪录 纪实

程序员5分钟:你的程序占用了多少内存?

顾仲贤

程序员

决定我们认知深度的究竟是什么?

石君

深度思考 方法论 连接

前端如何搞监控总结篇

大前端洞见

大前端 监控 全链路监控

最近的一些人生感悟

小智

人生 哲学

漫谈哲学与编程

keelii

编程 哲学

如何阅读源码?

武培轩

Java 源码 面试 进阶 后端

基于Kubernetes的多云和混合云

倪朋飞

云计算 架构 Kubernetes 微服务 Service Mesh

Golang 真的好用吗?

极客时间

编程语言 Go 语言

程序员陪娃漫画系列——看医生

孙苏勇

程序员 生活 陪伴 漫画

程序员都应该了解的运维知识经验

松花皮蛋me

DevOps 分布式 运维

我为什么选择infoq写作平台

三爻

小论互联网项目管理

南方

项目管理 互联网 个人成长 碧海潮生曲

很不幸,自动化测试永远只能是必要非充分条件

刘华Kenneth

DevOps 敏捷 自动化 测试 金字塔

程序员陪娃漫画系列——修龙头

孙苏勇

程序员 生活 陪伴 漫画

程序员5分钟:你了解32位带符号的整型吗?

顾仲贤

程序员

除了负载均衡的算法,你还应该知道这些

松花皮蛋me

Java 负载均衡 分布式

Java并发编程系列插曲——对象的内存结构

孙苏勇

Java 内存模型 面向对象 ClassLayout

克制文章长度

changyou

加班能解决交付的期望么?

拖地先生

项目管理 领导力 管理 时间管理

知乎开发了一个搜索引擎

红泥

搜索引擎 百度 知乎

别总说CMS、G1,该聊聊ZGC了

猿人谷

CMS G1 ZGC JVM

随手记备忘录的好习惯

changyou

敏捷开发 | 张三与需求管理

易成研发中心

敏捷开发 需求管理

世界知识产权日碎碎念

Yin

成长 随笔 知识产权

爱他,就让他走?

Selina

团队管理 领导力 团队协作

Java并发编程系列——线程

孙苏勇

Java 并发编程 线程

「超级右键」

非著名程序员

macos 程序员 效率工具 软件 Mac

聊聊苹果公司技术部门的宫斗和冷战

赵钰莹

程序员 外包 apple

在谈判中,你有哪些属于自己的独特的方法和技巧?

Yolanda

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