【问题标题】:Saving objects to a Data Structure or a File in JAVA将对象保存到 JAVA 中的数据结构或文件
【发布时间】:2018-08-14 15:53:52
【问题描述】:

语言

Java

应用:

患者查看者/创建者

问题

  1. 我应该如何处理正在创建的对象?
  2. 在创建 Patient 对象时将其保存到结构有哪些负面影响?有什么好处吗?

当前实施:

我最初的想法是创建一个 ArrayList 或 Map,并在创建 Patient 对象时将它们保存到数据结构中。做了一些研究,我发现做这样的事情可能不是最安全的事情,比如内存泄漏。(其他负面因素是什么?)

public class PatientApp {
  public static void main(String[] args) {
    ArrayList<Patient> patientList = new ArrayList<>();
    Patient patient = new Patient();
    patientList.add(patient);
  }
}

然后我想我可以将患者对象保存到一个文件中,并在需要检索患者信息时加载该文件。那会是更好的实现方式吗?

【问题讨论】:

  • 不清楚你在问什么。可能您想阅读有关存储在数据库中或序列化的信息

标签: java oop security arraylist


【解决方案1】:

您应该通过Patient 类实现Java Serializable 接口,还要注意Patient 类不包含任何不可序列化的属性(尽量限制在原始类型的属性中)。这样你就可以很容易地将Patient类的对象保存到一个文件中(也可以通过网络传输!)。

实际上,您应该将患者信息保存在存储设备中(例如数据库)。此外请记住,除非您在主存储器(即 RAM)中重新创建或恢复其保存的状态,否则您无法处理保存在辅助存储中的对象。因此,如果您想同时对多个患者进行一些操作(!),您应该将它们保存在类似数据结构的列表中(而不是文件中)。

要了解更多信息,请搜索Java Object Serialization

【讨论】:

  • 谢谢。为了确保我做对了(并把它锤到我的脑海里),你说的是当创建 Patient 对象并设置属性时,我应该将它保存到数据库中。如果我想对其进行处理,我必须将患者从数据库加载到数据结构中?
  • 要对数据进行操作(即 Patient 的实例),您必须将它们保存在数据结构中(在 RAM 中,但您担心内存泄漏,您必须在这样的确保没有内存泄漏的方法;系统错误可能是一个例外)。但是如果您需要保存它们以供进一步使用(例如重新启动后),您必须使用文件或数据库等永久存储。
【解决方案2】:

这取决于您的要求。患者对象的范围是什么? Arraylist 和其他数据结构不是永久存储,因此我们无法将这些数据结构与文件或数据库等永久存储进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多