前言 在JavaEE开发过程中,我们经常会把持久层的实体对象copy给VO,BO等,用于快速将持久层中的对象释放如下图所示。但很多时候BO,VO和Entity的结构都是类似的。刚开始通过写很多冗长的b.setF1(a.getF1())这样的代码来实现对象的Copy,后来逐渐延伸出Spring BeanUtils, CgLib BeanCopier, Apache BeanUtils, Dozer等快速实体映射工具jar。性能对比可以参考这篇文章:http://www.cnblogs.com/kaka/archive/2013/03/06/2945514.html
orika-mapper快速高效映射框架
为什么需要模型映射?
多次模型, 可以保证内部实体不被直接暴露, 也可使得接口层模型更为独立, 解耦实体层模型。Bean Mapping用于快速,高性能的对两个POJO对象做数据双向映射。
Orkia的设计思路
github:https://github.com/orika-mapper/orika
doc:http://orika-mapper.github.io/orika-docs/
Orika使用javaassist提前生成拷贝代码
优势:避免使用反射和多次读取映射规则,性能高内存消耗低
Orika 的设计思路就是预先通过javaassist 把Java Bean 之间的映射关系一次性生成目标拷贝方法代码。 这样就可以避免在Bean 映射环节一次次的读取映射规则。 这就是Orika 性能提升的原因。理论上以生成的目标Java 代码来运行映射是拷贝模式所能取到性能最大值的方法。
通过自定义注解的方式,Orika与Spring框架整合(在这里不描述是如何自定义整合使用),达到高性能的模型映射,支持无配置映射,支持复杂映射,支持自定义类型转换。
在实际项目中使用如下:
- 在applicationContext.xml文件中,配置Model的通配符扫描包路径
|
|
- 在需要copy的地方依赖注入
|
|
- entity上注解配置如下,此处省略get set方法。
|
|
如果您觉得文章不错,可以打赏我喝一杯咖啡!