面向Java SQL面向对象的方法

时间:2013-10-13 20:47:55

标签: java sql performance join

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

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

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

Company
CompanyID, Name

Category
CategoryID, Name

CompanyCategories
CompanyCategoryID, CompanyID, CategoryID

在SQL中,我通常会使用group concatentation应用一个简单的连接来获得如下所示的行:

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家公司。

我非常喜欢我正在处理数据库表的面向对象方法,但我不确定如何最好地处理视图。

哪个更有效率?

0 个答案:

没有答案