将对象放入MySql之前是否需要序列化对象?

问题描述 投票:0回答:3

我已经用JAXB反序列化XML文件。现在,由于有了xml文件,我有了具有信息的类。现在我需要将数据放入mySql中,是否需要再次使用JSON进行序列化?]

java mysql serialization jackson jaxb
3个回答
0
投票

如果要将对象放入数据库列,则需要对其进行序列化。

HOWEVER-不应将序列化对象放入数据库列的原因有很多。最重要的是,tatabase表中的序列化数据(JSON)是不可查询的...除了使用%LIKE%的最粗略方法。

更好的主意是将Java类的字段映射到表的列。这可以手动完成,也可以使用ORM技术(例如Hibernate / JPA)完成。

另一种选择是使用所谓的JSON数据库,例如CouchDB或MongDB。


0
投票

使用mySQL或任何其他关系数据库的目的是将数据存储为单独的属性。在关系数据库中使用JSON会将所有数据输入一列,而不是为每条数据都使用单独的列。

如果您确实想以JSON格式存储数据,则可以尝试使用NoSQL数据库,例如MongoDB。在MongoDB中,数据以JSON格式存储。


0
投票

嗯,MySQL无法将Java对象直接存储在数据库中;您需要将其转换为MySQL支持的primitive data type

通常,将存储在数据库中的对象以serialized form的形式存储在BLOB中。但是,这种方法有几个缺点,可能最重要的一个缺点是它限制了读取数据的能力:没有太多的麻烦,您就无法从另一种语言读取数据。另一个原因是数据以人类无法读取的形式存储。另一方面,这种方法可能使您免于下次从数据库中读取后再次解组。

您还可以将其以string的形式存储为XML或JSON等人类易读的格式。我看不到将其存储为JSON而不是XML的任何价值,除了JSON可以为您节省一些字节外,但我认为这样做不值得。通过这种方法,数据以人类可读的形式存储,并且与序列化形式不同,可以使用任何语言轻松读取和解组数据。这些优势并不是免费提供的,这里也有一个缺点:它的大小要大得多,但是起初您不应该担心这一点,除非您对存储有严格的要求。

我不建议将对象存储为单个值,您可能希望将每个字段存储在单独的列中;在这种情况下,您需要ORM tool来帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.