无SQL的Java表实现
我正在实现事务的No-undo/redo算法。我计划使用Java的内置功能,而不是使用SQL表。但我不确定如何充分利用它们。因此,任何对我的实施有正确方向的帮助或指点都将不胜感激。我的任务如下无SQL的Java表实现,java,linked-list,hashtable,Java,Linked List,Hashtable,我正在实现事务的No-undo/redo算法。我计划使用Java的内置功能,而不是使用SQL表。但我不确定如何充分利用它们。因此,任何对我的实施有正确方向的帮助或指点都将不胜感激。我的任务如下 TransactionID Transaction_Status Transaction_Items 1 Active NIL TransactionID Transaction_Status
TransactionID Transaction_Status Transaction_Items
1 Active NIL
TransactionID Transaction_Status Transaction_Items
1 Commit X
每当我得到一个新的事务时,我必须将它插入到事务表中。假设我得到一笔交易,如下所示
b1代码>
因此,我的交易表如下所示
TransactionID Transaction_Status Transaction_Items
1 Active NIL
TransactionID Transaction_Status Transaction_Items
1 Commit X
现在,当我收到一个要使用相同事务ID写入的项目时,我必须单独更新transaction_items列
我收到的交易项目如下所示
W1(X,2,0)代码>
遇到提交事务后
C1代码>
我的交易表应更新如下
TransactionID Transaction_Status Transaction_Items
1 Active NIL
TransactionID Transaction_Status Transaction_Items
1 Commit X
我可以使用SQL表实现上述结构,并轻松地更新列。但我计划使用java本身提供的丰富实现。我决定使用链表实现。但我无法在链表中设置键。基本上,我正在尝试实现一个链表数组。我无法清楚地理解这个概念。如能在正确的方向上提供帮助,以实现上述目标,我们将不胜感激
如果需要更多信息,请告诉我
我正在使用arraylist实现上面讨论的结构。set语句覆盖我以前设置的值。通过这种方式,我可以模拟db更新操作。假设最初我的transactionitem arraylist包含以下项目
X
Y
现在我想在X上再加一个Z(比如说xz)。我使用for循环遍历该特定实例,并将arraylist.size作为上限。找到特定项后,我将现有值复制到本地字符串。之后,我将连接需要插入的所需值。完成后,我将使用下面的行进行实际更新
transactionitem.set(i,transactionupdate)
谢谢大家的帮助。如果你需要更多信息,请告诉我 我认为您使用数据库的方法是正确的,如果将其转储,您将损失很多
就丰富性而言,使用本地SQLite数据库来保存对象确实很难
下面是一些仅用Java很难实现的问题,但您可以从SQLite(+Java)免费获得这些问题:
- 对任何表格数据使用任意列列表,并向用户提供按任何列排序的功能—您所需要做的只是更改ORDERBY子句
- 通过创建适当的索引,您可以保持最高的性能,即使对象列表非常大
- 使用标准SQL进行数据操作(使用索引-非常快!)
- 您可以利用SQLite提供的真实事务,并且可以始终保证数据的一致性
- 如果您的Java应用程序退出或更糟的崩溃,那么您的所有Java对象都将消失。但是,若您将它们保存在数据库中,那个么只需在开始时从数据库中读取它们,就可以从停止的地方继续—并没有必要考虑序列化或反序列化(或者,至少这应该不是什么问题)李>
- 在某些情况下,您不希望将数据保留在磁盘上—这很好。通过使用
:mem:
作为数据库文件名,简单地使用SQLite内存数据库-使用SQL进行快速数据操作非常快速和方便
非常感谢您的回复。我可以连接到数据库并轻松地执行操作。然而,我想学习java中的一些复杂结构。是否可以用java实现(我看到了很多特性,比如ArrayList、LinkedList、HashedList、maps等等)。然而,我不知道该从哪里开始使用,当然,选择权在你。最后,您可能会在没有SQL的情况下为Java表重新发明轮子,比如。但是,您提到的几乎所有映射到SQL的东西都非常好,而且与Java不同,它们不受内存的限制:arraylist=>table、map=>Tablewithindexed unique key column,等等。。。