我有下面的静态类型Object声明
Integer typeId;
//Obtaining typeId
Object containerObject = ContainerObjectFactory.create(typeId);工厂可生产不同类型的container objects,如Date、Integer、BigDecimal等。
现在,在创建containerObejct之后,我需要将其序列化为String类型的对象,并将其存储到带有hibernate的数据库中。我不打算提供对象-关系映射,因为它与问题没有直接关系。
好的,我想做的是根据containerObject的运行时类型序列化它,然后用它被序列化的类型对它进行去功能化。有可能吗?我能用xml-serialization吗?
发布于 2015-04-11 08:56:30
有很多种选择,你的问题相当广泛。你可以:
您提到的一个关键特性是,对象类型需要嵌入到序列化数据中。原生Java序列化将类型嵌入到数据中,因此这是一个很好的选择。然而,这是一把双刃剑,因为这会使数据变得脆弱--如果在将来的某个时候您更改了完全限定的类名,那么您就不能再对对象进行反序列化。
另一方面,Gson不嵌入类型信息,因此您必须同时存储JSON和对象类型,以便反序列化对象。
XML和JSON的优点在于它们是文本格式,因此即使不对其进行反序列化,您也可以使用人工眼睛查看它是什么。然而,Base64编码的Java序列化是一堆难以理解的字符。
发布于 2015-04-11 08:37:37
有多种方法,但您需要自定义序列化方案,例如:
D|25.01.2015
I|12345
BD|123456.123452436其中,字符串的第一部分表示类型,第二部分表示数据。您甚至可以为此使用一些二进制序列化方案。
https://stackoverflow.com/questions/29575363
复制相似问题