java - 我需要在将对象放入 MySql 之前对其进行序列化吗?
问题描述
我已经用 JAXB 反序列化了一个 XML 文件。现在我有了带有信息的类,这要归功于 xml 文件。现在我需要将数据放入 mySql 中,是否需要使用 JSON 再次序列化?
解决方案
那么,MySQL 不能将您的 Java 对象直接存储在数据库中。您需要将其转换为 MySQL 支持的原始数据类型。
通常,对象以其序列化形式存储在数据库中,如BLOB
. 但是,这种方法有几个缺点,可能最重要的一个是它对读取数据的限制:如果不费吹灰之力,就无法从不同的语言读取数据。此外,数据以人类不可读的形式存储。另一方面,这种方法可能会避免您在下次从数据库中读取它之后再次对其进行解组。
您也可以将其存储为string
人类可读的格式,例如 XML 或 JSON。我看不到将它存储为 JSON 而不是 XML 的任何价值,除非 JSON 可以为您节省一些额外的字节,但我认为这样做不值得。通过这种方法,数据以人类可读的形式存储,并且可以使用任何语言轻松读取和解组,这与序列化形式不同。虽然这些优点不是免费的,但你也有一个缺点:它的尺寸要重得多——但除非你对存储有严格的要求,否则一开始你不应该担心。
我不建议将对象存储为单个值,您可能希望将每个字段存储在单独的列中。在这种情况下,您需要一个ORM 工具来帮助您。
推荐阅读
- flutter - 有 Flutter 的屏幕共享包吗?
- swift - iOS 13 - 当搜索主动推送到其他 VC 时,该 VC UITableView 在 Swift 4 中的 NavigationBar 下
- php - 在 Laravel 中显示有限数量的外语字符
- javascript - 如何延迟或拦截导航更改,直到使用 Chrome 扩展在 DOM 上完成功能
- angular-material - 角度材料 dateAdapter 不会将不同的小时/分钟/秒视为不同的日期
- c++ - 为什么c ++中的分号在代码开头插入时不会显示任何错误?
- python - 为什么带有子进程的 PySimpleGUI 在 Window7 上崩溃
- java - 如何在不重叠先前数据的情况下编写 JSON 文件
- ios - 或在 whereField 中从 Firestore 获取文档
- html - 如何从邮递员的 HTML 响应中获取会话 ID