大家在公司都是怎么深拷贝/浅拷贝实体类的?

2022-10-16 12:25:36 +08:00
 zhiyu1998
像是我在的公司一般就用 Spring 的 BeanUtils 和 Apache 的工具类进行 copy ,不知道大家有没有高效或者更好的扩展方法进行 VO DTO 这些转换?
4803 次点击
所在节点    Java
32 条回复
OrangeAdd
2022-10-16 12:27:01 +08:00
可以看下 mapstruct
zhiyu1998
2022-10-16 12:30:21 +08:00
@OrangeAdd !!这个我倒是看公众号经常有推荐 但是会不会项目加进去忽然用起来就有点别扭
HinkLeung
2022-10-16 12:31:26 +08:00
@zhiyu1998 #2 不会啊,用着挺方便的
zhiyu1998
2022-10-16 12:46:07 +08:00
@HinkLeung ok mark 住了
optional
2022-10-16 13:14:41 +08:00
mapstruct+1
dreamlike
2022-10-16 14:28:52 +08:00
深拷贝 我就比较弱智 我先序列化 json 然后反序列化
浅拷贝 我靠 vo2dto 这个插件搞的 基本走编码时代码生成的路子 出问题好查
bthulu
2022-10-16 14:33:09 +08:00
IDE 自动生成 clone 方法啊, 你难道用反射? 那你还怎么用 GraalVM
zhiyu1998
2022-10-16 14:36:43 +08:00
@dreamlike 浅拷贝我也有这个插件,哈哈哈,但是有时候懒得写就直接 BeanUtils 了,可以查问题这个学到了!
zhiyu1998
2022-10-16 14:37:59 +08:00
@bthulu 实现 Cloneable 吗?
Red998
2022-10-16 16:50:50 +08:00
Apache 这个性能有点低 。推荐插件吧 https://plugins.jetbrains.com/plugin/18264-beanmappingkey
深拷贝:new 一个全新对象 set 最稳
shelken
2022-10-16 17:16:22 +08:00
@redorblacck886 感谢,前两周写的时候就在找有没有自动 builder 相同字段名字转换的,要不然一个一个手打对应字段太难受了
ConnorTomato
2022-10-16 17:23:53 +08:00
BeanMappingKey + 1 ,是一个 V2 小伙伴写的。自动 get set ,一目了然,绝不可能出错。
BeanUtils 有各种坑, 曾经遇到一个坑是 RPC 调用的时候,序列化报错。
zhiyu1998
2022-10-16 18:11:27 +08:00
@redorblacck886 我超 这个 new bee
silencil
2022-10-16 18:24:29 +08:00
也是用 mapstruct
Red998
2022-10-16 18:29:57 +08:00
@shelken 嗯 用工具类浅拷贝 虽然方便其实还是反射调用。虽然性能在调用次数其实差不多。但是 set 最快也最稳
哪里有问题一目了然。缺点代码多
mikicomo
2022-10-16 18:38:22 +08:00
wolfie
2022-10-16 18:42:02 +08:00
mapstruct
编译期处理,速度快、有问题反编译就能看到原因。
billly
2022-10-16 21:49:06 +08:00
直接用插件生成方法,简单高效
zhiyu1998
2022-10-16 22:35:21 +08:00
@billly 就是写起来有点臃肿
zhiyu1998
2022-10-16 22:35:46 +08:00
@mikicomo 这个还真没用过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/887276

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX