gpt4 book ai didi

java - 使用序列化将数据存储在单个文件中是一个坏主意吗?

转载 作者:行者123 更新时间:2023-12-01 10:46:41 24 4
gpt4 key购买 nike

假设我有一个非常简单的程序,可以添加/编辑/删除并列出产品,并且我不想让用户在他的计算机中安装数据库。将所有产品存储在一个类中,然后在发生更改时序列化/保存它,这是一个坏主意吗?

例如,该类将是这样的:

public class MyProducts implements Serializable {

private List<Product> products;

public void AddProduct(Product p) {
// Adds a product...
}

public void RemoveProduct(Product p) {
// Removes a product...
}
}

请记住,这将是一个简单的程序,没有什么关键的,只是这样我就不需要在这样一个简单的软件中费心处理关系数据库。

场景 2:在真实的软件中,将程序的配置/首选项存储在序列化文件中是个好主意吗?

谢谢!

最佳答案

这可能是一个坏主意(TM),因为:

  1. 任何更改都需要重写整个文件
  2. 没有数据完整性保证 - 没有 ACID
  3. 您以后无法查询该文件 - 所有内容都必须位于内存中。

我建议使用基于文件的数据库。实际上有数百个 Java 嵌入式数据库程序,例如:

为什么不使用其中之一?

如果您确实想将数据存储在文件中,请考虑:

  • 定义serialversionuid以便您可以控制向后兼容性
  • 可能使用人类可读的格式,例如 JSON,而不是 Java 序列化,这也具有 being faster 的优点.

为了回答你的最后一个问题,在“真正的软件”中,我希望使用类似由 JPA 驱动的文件数据库之类的东西。使用当前的工具(例如 Spring Boot),这几乎不需要配置。

关于java - 使用序列化将数据存储在单个文件中是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com