【问题标题】:Java table implementation without SQL没有 SQL 的 Java 表实现
【发布时间】:2013-02-02 12:18:50
【问题描述】:

我正在实现事务的 No-undo/redo 算法。我打算使用 Java 的内置功能而不是使用 SQL 表。但我不确定如何充分利用它们。因此,我们将非常感谢任何为我的实施提供正确方向的帮助或指示。我的任务如下。

每当我得到一个新事务时,我都必须将它插入到事务表中。假设我得到如下交易。

b1;

所以,我的交易表如下。

 TransactionID     Transaction_Status     Transaction_Items

       1                Active                   NIL

现在,当我收到要写入具有相同事务 ID 的项目时,我必须单独更新 transaction_items 列。

我收到的交易项目如下。

W1(X,2,0);

TransactionID      Transaction_Status      Transaction_Items

     1                   Active                  X

遇到提交事务后,

C1;

我的交易表应该更新如下。

TransactionID       Transaction_Status      Transaction_Items

      1                   Commit                   X

我可以使用 SQL 表实现上述结构并轻松更新列。但我计划使用 java 本身提供的丰富实现。我决定使用链表来实现。但我无法在链表中设置键。基本上,我正在尝试实现一个链表数组。我无法清楚地理解这个概念。任何在正确方向实施上述内容的帮助将不胜感激。

如果需要更多信息,请告诉我。


我正在使用 arraylist 来实现上面讨论过的结构。 set 语句覆盖了我之前设置的值。通过这种方式,我可以模拟db更新操作。假设最初我的 transactionitem arraylist 有以下项目。

X 是的

现在我想在 X 上添加另一个 Z(比如 X Z)。我正在使用以 arraylist.size 作为上限的 for 循环遍历该特定实例。找到我的特定项目后,我会将现有值复制到本地字符串。之后,我将连接需要插入的所需值。完成后,我使用下面的行来进行实际更新。

transactionitem.set(i, transactionupdate);

感谢大家的帮助。如果您需要更多信息,请与我们联系。

【问题讨论】:

    标签: java linked-list hashtable


    【解决方案1】:

    我认为您在数据库方面一直走在正确的轨道上,并且通过倾销它,您将损失很多。

    就丰富性而言,使用本地 SQLite 数据库来保存您的对象真的很难被击败。

    以下是一些仅在 Java 中很难实现的问题,但您可以从 SQLite(+Java) 免费获得它们:

    • 对任何表格数据使用任意列列表,并为用户提供按任何列排序 - 您需要做的就是更改 ORDER BY 子句。
    • 通过创建适当的索引,您可以保持最高性能,即使对象列表非常大。
    • 使用标准 SQL 进行数据操作(使用索引 - 非常快!)。
    • 您可以使用 SQLite 必须提供的真实事务,并且可以始终保证数据一致性
    • 如果您的 Java 应用程序退出或更糟 - 崩溃,您的所有 Java 对象都消失了。但是,如果您将它们保存在数据库中,您只需在开始时从数据库中读取它们,您就可以从中断的地方继续 - 无需考虑序列化或反序列化(或者,至少它应该不是问题) .
    • 在某些情况下,您不想将数据保存在磁盘上——这很好。只需使用:mem: 作为数据库文件名即可使用 SQLite 内存数据库 - 使用 SQL 进行快速数据操作非常快速且非常方便。

    【讨论】:

    • 非常感谢您的回复。我可以连接到数据库并轻松地进行操作。但是,我想学习java中的一些复杂结构。是否可以在 java 中实现(我看到了很多特性,如数组列表、链接列表、哈希列表、地图等)。但是,我对使用哪个以及从哪里开始感到困惑。
    • 当然,选择权在你。最后,您最终可能会在没有 SQL 的情况下为您的 Java 表重新发明轮子,例如 H2。但是你提到的几乎所有东西都可以很好地映射到 SQL 中,并且与 Java 不同,它们不受内存的限制:arraylist => 表、map => 具有索引唯一键列的表等......
    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2021-12-20
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多