如何在 MySQL 中存储 Java 代码中的 ArrayList?

发布于 2024-10-15 15:19:14 字数 120 浏览 1 评论 0 原文

这是更好的方法

a)将 AL 存储为 BLOB
b) 创建列来存储组成 AL 的每个字符串。

我还可以采取其他方法吗?

which is a better approach

a) Store AL as BLOB
b) Create columns to store each of the string that makes the AL.

Is there any other approach that I can take?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

千と千尋 2024-10-22 15:19:14

当然b

class Person{
  String name;
  int age;
  //getters setters and other stuff
}

List<Person> persons = new ArrayList<Person>();

PERSON_MASTER

id |名称 |年龄

另请参阅

Ofcourse b

class Person{
  String name;
  int age;
  //getters setters and other stuff
}

List<Person> persons = new ArrayList<Person>();

Table

PERSON_MASTER

id | name | age

Also See

很糊涂小朋友 2024-10-22 15:19:14

避免序列化对象。

序列化对象时存在巨大的潜在陷阱。
Joshua Bloch 在 Effective Java 中有一个完整的部分,专门讨论序列化,他总结道如果可能的话你应该避免它。

所以选择选项B

Avoid Serializing objects.

There are huge potential traps when it comes to serializing objects.
Joshua Bloch has a complete section in Effective Java , dedicated to Serialization where he concludes that you should avoid it if possible.

So go for option B

执妄 2024-10-22 15:19:14

您应该采用b方法,因为:

  • 在Java的未来版本中,ArrayList类的结构可能会改变,因此您将无法反序列化BLOB 返回 ArrayList 实例
  • 将来,您可能希望使用 Java 以外的语言(例如 .NET 中的 C#)使用相同的数据库,您不能简单地反序列化 ArrayList BLOB 返回到 .NET 列表。
  • 当您将 ArrayList 存储为 BLOB 并转到 DBMS 管理控制台并编写查询时,您将无法看到这些 BLOB 的内容。

话虽如此,我建议您阅读一本关于 SQL 和数据库设计的入门书以及一本关于关系代数的理论书。这会让你的事情变得更加清晰。

You should go with the approach b, because:

  • In a future version of Java, the structure of the ArrayList class may change and thus you won't be able to deserialize the BLOBs back to ArrayList instances
  • In the future, you might want to use the same database with a language other than Java (e.g. C# in .NET) you can't simply deserialize the ArrayList BLOBs back to .NET lists.
  • When you store the ArrayList as the BLOB, and go to your DBMS management console, and write queries, you won't be able to see the contents of those BLOBs.

Having said that I recommend you to read an introductory book about SQL and database design as well as a theoretical book about relational algebra. This will make things much clearer to you.

妄想挽回 2024-10-22 15:19:14

您应该创建一个表来存储值列表。

表 A:idA、col1、col2

表 B:idB、ida、rank、value

当然,表 B 中的 ida 上有一个外键

You should create a table to store your list of values.

Table A : idA, col1, col2

Table B : idB, ida, rank, value

With of course a foreignkey on ida in table B

夜夜流光相皎洁 2024-10-22 15:19:14

我想说的是方法 B。将整个列表存储在单个 blob 中首先消除了使用数据库的许多优势。

如果它是复杂对象的列表,请查看 JPA 或 Hibernate 之类的工具来帮助您进行数据库交互。

I'd say approach B. Storing the entire list in a single blob removes a lot of advantages of using a database in the first place.

If it's a list of complex objects, look at something like JPA or Hibernate to assist you with the database interactions.

聆听风音 2024-10-22 15:19:14

请学习数据库建模快速课程...您在这里指的是 1:N 关系,这用于将每个字符串存储为不同表中的一行,并使用对原始表中的行的外键(引用)您的对象所在的表。

Please take a quick course in DB modelling... you are refering here to a 1:N relationship, this is used storing each String as a row in a different table, with a foreign key (a reference) to the row in the original table where your object is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文