如何在MySQL中存储Java代码中的ArrayList?
哪种方法更好 a)将所有内容存储为BLOB如何在MySQL中存储Java代码中的ArrayList?,java,mysql,database-design,Java,Mysql,Database Design,哪种方法更好 a)将所有内容存储为BLOB b)创建列以存储生成AL的每个字符串 我还可以采取其他方法吗?当然b class Person{ String name; int age; //getters setters and other stuff } List<Person> persons = new ArrayList<Person>(); id | name | age 另请参见 当然b class Person{ String n
b)创建列以存储生成AL的每个字符串
我还可以采取其他方法吗?当然b
class Person{
String name;
int age;
//getters setters and other stuff
}
List<Person> persons = new ArrayList<Person>();
id | name | age
另请参见
- 当然b
class Person{
String name;
int age;
//getters setters and other stuff
}
List<Person> persons = new ArrayList<Person>();
id | name | age
另请参见
当然,使用表B中ida上的foreignkey,您应该创建一个表来存储您的值列表 表A:idA、col1、col2 表B:idB、ida、等级、价值
当然,在表B中有一个关于ida的foreignkey,我会说方法B。将整个列表存储在一个blob中消除了首先使用数据库的许多优点
如果它是一个复杂对象的列表,请查看类似JPA或Hibernate的内容,以帮助您进行数据库交互。我会说方法B。将整个列表存储在一个blob中首先会消除使用数据库的许多优点
如果它是一个复杂对象的列表,请查看类似JPA或Hibernate的内容,以帮助您进行数据库交互。请快速学习数据库建模。。。这里指的是1:N关系,用于将每个字符串作为一行存储在不同的表中,外键(引用)指向对象所在的原始表中的行。请快速学习数据库建模。。。这里引用的是1:N关系,用于将每个字符串作为一行存储在不同的表中,并使用外键(引用)指向对象所在的原始表中的行。避免序列化对象。 在序列化对象时,存在巨大的潜在陷阱。 约书亚·布洛赫(Joshua Bloch)在中有一个完整的章节,专门讨论序列化,他总结说,如果可能的话,您应该避免序列化 因此,选择选项B避免序列化对象。 在序列化对象时,存在巨大的潜在陷阱。 约书亚·布洛赫(Joshua Bloch)在中有一个完整的章节,专门讨论序列化,他总结说,如果可能的话,您应该避免序列化
所以选择选项B你应该选择方法B,因为:
- 在Java的未来版本中,
类的结构可能会改变,因此您将无法将blob反序列化回ArrayList
实例ArrayList
- 将来,您可能希望将同一数据库与Java以外的语言(例如.NET中的C#)一起使用。您不能简单地将
blob反序列化回.NET列表ArrayList
- 当您将
存储为BLOB,然后转到DBMS管理控制台并编写查询时,您将无法看到这些BLOB的内容ArrayList
说到这里,我建议您阅读一本关于SQL和数据库设计的介绍性书籍,以及一本关于关系代数的理论书籍。这会让事情变得更清楚。你应该采用b方法,因为:
- 在Java的未来版本中,
类的结构可能会改变,因此您将无法将blob反序列化回ArrayList
实例ArrayList
- 将来,您可能希望将同一数据库与Java以外的语言(例如.NET中的C#)一起使用。您不能简单地将
blob反序列化回.NET列表ArrayList
- 当您将
存储为BLOB,然后转到DBMS管理控制台并编写查询时,您将无法看到这些BLOB的内容ArrayList
说到这里,我建议您阅读一本关于SQL和数据库设计的介绍性书籍,以及一本关于关系代数的理论书籍。这将使您更加清楚。为什么要创建列而不只是行?为什么要创建列而不只是行?