protobuf是不是在一定程度上替代实体对象了?

jack_jones 发布于 09/24 13:54
阅读 393
收藏 0

OSC年度开源问卷新鲜出炉,你的回答对我们很重要,参与开源可以从这份问卷开始>>>

我刚看demo,手写.proto文件,然后生成.java文件,这个.java文件是不是就替换原有的实体类方式了?

加载中
0
RobertLu
RobertLu

protobuf生成的java类,和POJO是有一点不同的。

1. protobuf和POJO接口不兼容

比如protobuf的List(repeated),他的Get方法签名是:

public com.google.protobuf.ProtocolStringList getMessagexList()

和POJO中的List还是差别比较大的。

2. protobuf对象是不可变的

protobuf对象只有get方法,没有set方法,也就是说,一个protobuf对象一旦创建,就无法修改了。

 

---

另外,如果要说和POJO的契合程度,可能Thrift的IDL设计的比较好,Map、List用起来都比价顺手。

从protobuf的Map、List设计来看,protobuf为了兼容性做了太多兼容,可能不是很好用。

RobertLu
RobertLu
回复 @jack_jones : 如果你觉得两个问题可以接受,那么直接用protobuf对象也可以。如果觉得不爽,那就只在数据传输的时候转一下。
jack_jones
jack_jones
那是不是只有在数据传输时,替换一下原有的DTO实体类就行
0
kakai
kakai

protobuf生成的类比较庞大,最好不要把这些类当做类,应该当做一种数据传输结构体(java中可认为是DTO)

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部