【问题标题】:Java: Storing information from database. What collections are appropriate?Java:从数据库中存储信息。什么收藏合适?
【发布时间】:2010-06-07 13:57:26
【问题描述】:

我用 Java 编写了一个应用程序。我从数据库中得到一个表(客户端),其中包含以下字段:

名称 |姓氏 |地址

在我的应用中存储这些数据的最佳解决方案是什么?我应该为每个客户端创建一个对象并将这些对象存储在列表或集合中吗?

该表包含大约 100 条记录,并且已经排序。 提前致谢。

【问题讨论】:

    标签: java database object storage


    【解决方案1】:

    最直接的方法是创建一个包含与您的数据库列(姓名、姓氏、地址)相对应的字段的类。然后,正如您自己所说,为表中的每一行创建此类的实例并将它们存储在 List 中。

    Set 不合适,因为大多数 Set 实现(例如 HashSet)没有排序,因此如果您的数据已排序,Set 将不会保留排序顺序。订购了List

    要从数据库中取出数据,您可以简单地自己在JDBC 中进行编程,在这种情况下这很简单:打开与数据库的连接,执行 SQL 查询,遍历 @987654332 中的行@,为每一行创建一个对象并用您从ResultSet 获得的数据填充它,将创建的对象存储在List 中。

    当您的数据模型变得比单个类更复杂时,使用object-relational mapping (ORM) 框架可能是值得的。 Java 对此有一个标准 API,Java Persistence API (JPA)。 Hibernate 是此 API 的流行实现。

    【讨论】:

    • 如果客户想要优化搜索,让她使用数据库来完成。
    • LinkedHashSet 是按插入顺序排序的,例如 List
    • @BalusC 是的,这是一个保持顺序的Set 实现,但请记住,它不允许重复,并且您的数据类需要正确实现equals()hashCode(),如果你想用这个。
    • 数据库中通常也不允许重复实体。重写 equals 和 hashCode 是显而易见的,并且在您使用 List#remove()List#contains() 等时也是必需的。 Hibernate/JPA 几乎一直与Set 一起工作。
    【解决方案2】:

    虽然 Hibernate 可能对您正在做的事情有点过分,但您可能仍想检查一下。如果您最终要做的不仅仅是检索,那么可能值得投入一些时间(以后可能会为您节省大量工作)。

    根据您对记录所做的操作,您可以将它们留在记录集中,对它们进行迭代,然后对它们做任何您想做的事情。如果您需要对它们做一些工作,那么可以,将每个对象放入一个对象中,并将这些对象放入某种类型的集合中(ArrayList 将为您保持排序)。

    【讨论】:

      【解决方案3】:

      你应该为对象创建一个类,然后有一个对象列表,每个对象对应一个表记录。

      如果您要经常执行此类任务,我建议您使用 Hibernate 之类的工具来简化和自动化此操作,这样您就不必总是手动创建和填充类并与自己数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-05
        • 2013-11-28
        • 1970-01-01
        • 2020-10-27
        • 2015-10-08
        • 1970-01-01
        • 2020-07-01
        • 2011-06-19
        相关资源
        最近更新 更多