如何在mysql表中存储未知大小的HashSet。我知道我可以遍历它并将其存储在一个longtext字段中。
然而,当我检索该字段并将其临时存储到字符串中时,它将使用额外的内存来存储大量信息。
有没有简单的方法来存储HashSet?
答案 0 :(得分:5)
带有索引列的SQL表基本上是一个哈希集。
您不应该尝试在表中存储(持久化)HashSet的二进制表示。您应该将HashSet的数据存储(持久化)为行和列,然后将该数据读入Java端的HashSet。
换句话说,您应该使用数据库直接存储数据,而不是保存包含数据的Java集合的序列化表示。这就是数据库的意图......以结构化,一致的方式存储/保存数据。如果您真正需要做的就是序列化HashSet那么为什么要干扰数据库呢?
答案 1 :(得分:1)
我会将其转换为JSON并将其存储为文字。
有些库可以轻松地转换为JSON和从JSON转换 - 例如googles gson
答案 2 :(得分:0)
是。表中单独记录中的每个元素都带有“父”表的外键。 Yhay是JPA处理它的方式。
答案 3 :(得分:0)
您可以将其序列化并将其另存为BLOB类型。因为HashSet实现了Serializable。 http://download.oracle.com/javase/1.4.2/docs/api/java/util/HashSet.html
http://download.oracle.com/javase/1.4.2/docs/api/serialized-form.html#java.util.HashSet