gpt4 book ai didi

java - 深拷贝 : Orika vs SerializationUtils

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:20 28 4
gpt4 key购买 nike

在一个实体 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;
}

DefaultMapper 是一个 orika-mapper:

import javax.enterprise.context.ApplicationScoped;

import ma.glasnost.orika.impl.ConfigurableMapper;

@ApplicationScoped
public class DefaultMapper extends ConfigurableMapper {

}

使用 orika 进行深度复制是否合法?还是应该使用 SerializationUtils 来实现这一目标?

TODO 的原因是:每次我们调用 clone() 时,orika 使用反射来计算实际映射。遗憾的是我们不能使用注入(inject),因为我们在实体内部。

我们也可以创建一个构造函数,在其中手动映射每个字段。这不是这里的解决方案,因为有许多字段具有深层嵌套。此外,如果添加新列,则很可能会忘记调整映射。

你有什么比使用 orika 更好的解决方案吗?SerializationUtils 是一个替代品吗?

最佳答案

Orika 的速度要快得多。在 10000 次映射迭代中,orika 需要 3 毫秒来映射我的对象。 SerializationUtils 需要超过 3 才能完成相同的操作。此外,orika 对已经映射的对象有一个缓存。当然这会使用更多的元空间。这取决于具体情况,但总的来说,orika 对我来说是更好的解决方案。

关于java - 深拷贝 : Orika vs SerializationUtils,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965596/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com