java - 深拷贝:Orika vs SerializationUtils
问题描述
在一个实体MyEntity
中,我发现了这样的东西
@Override
public MyEntity clone(){
// TODO: do not use Orika here
MyEntity clone = new DefaultMapper().map(this, MyEntity.class);
clone.setFieldA(null);
clone.setFieldB(null);
return clone;
}
作为一个orika DefaultMapper
-mapper:
import javax.enterprise.context.ApplicationScoped;
import ma.glasnost.orika.impl.ConfigurableMapper;
@ApplicationScoped
public class DefaultMapper extends ConfigurableMapper {
}
使用 orika 进行深层复制是否合法?还是应该使用 SerializationUtils 来实现这一点?
原因TODO
是:每次我们调用clone()
orika 时都会使用反射来计算实际映射。遗憾的是我们不能使用注入,因为我们在一个实体内部。
我们也可以创建一个构造函数,在其中手动映射每个字段。这不是解决方案,因为有很多字段嵌套很深。此外,如果添加新列,则忘记调整映射的风险很高。
您有比使用 orika 更好的解决方案吗?SerializationUtils 是替代品吗?
解决方案
Orika 的速度更快。在 10000 次映射迭代中,orika 需要 3 毫秒来映射我的对象。SerializationUtils 需要超过 3秒的时间来做同样的事情。此外,orika 有一个用于已映射对象的缓存。当然,这使用了更多的元空间。这取决于情况,但在我的情况下,总体而言,orika 是一个更好的解决方案。
推荐阅读
- web-scraping - 如何使用 puppeteer 在 div 内滚动?
- python - 是否有任何 pandas 函数或方法可以从 python 中的数据框中提取所需的组
- android - 如何在膨胀布局中设置文本?
- php - laravel:数据库员工ID和姓名为二维码
- reactjs - 如何使用 Promise 正确捕获错误?
- c++ - 如何将元素插入到 std::map 的共享指针中?
- html - 跨 div 垂直对齐文本
- amazon-web-services - 无法连接到我在私有子网中的 Redshift 集群
- google-apps-script - Google Apps 脚本中未设置 X-Frame-Options
- c - 在c中,用户定义的函数代码在调用时是否加载到内存的文本段中?