0

我在 Java 中有一个 DatabaseObject,它可以从数据库中动态检索信息并将其存储在键值对中(它只是一个扩展的 LinkedHashMap)。

我的 DatabaseObject 可以根据提供的与数据库表匹配的列将值加载、删除、更新和插入到表中。

我的数据库中有一个“公司”表和一个“类别”表,每个公司可以有多个类别。我还有一个“CompanyCategories”表,其中记录了每个公司的类别。这些是表格的样子:

Company
CompanyID, Name

Category
CategoryID, Name

CompanyCategories
CompanyCategoryID, CompanyID, CategoryID

在 SQL 中,我通常会应用带有组连接的简单连接来获得如下所示的行:

CompanyID, Name, Categories
1, Dummy Company, Photographer;Videographer

我试图弄清楚如何最好地将这些信息提取到 Java 中的 Company 对象中,该对象包含对另一个 Category 对象的引用。在我看来,我不会提取 CategoryID 或 CompanyCategoryID,但如果我从公司中删除一个类别,我将需要它们,因为它位于单独的表中。

我的问题是背靠背执行多个 SQL 语句会更好吗?换句话说:

SELECT  * FROM company WHERE CompanyID=1; SELECT * FROM category WHERE CompanyID=1;

然后在 Java 中将它们组合成一个带有 Category 对象列表的 Company 对象,或者我应该让数据库进行连接并在我的视图中包含很多额外的信息?

SELECT * from company_view
CompanyID, Name, CompanyCategoryIDs, CategoryIDs, Categories
1, Dummy Company, 4;6, 2;3, Photographer;Videographer

我对后者的问题是,保持直线很快就会有问题,而我担心前者的性能。对于一家公司来说,这没什么大不了的,但是随时可以加载2000-4000家公司。

我真的很喜欢我在处理我的数据库表时采用的面向对象的方法,但我不确定如何最好地处理视图。

哪个效率更高?

4

0 回答 0