Java SQL面向对象的表处理方法

Java SQL面向对象的表处理方法,java,sql,performance,join,Java,Sql,Performance,Join,我有一个Java中的DatabaseObject,它可以从数据库中动态检索信息并将其存储在键值对中(它只是一个扩展的LinkedHashMap) My DatabaseObject可以根据提供的与数据库表匹配的列,在表中加载、删除、更新和插入值 我的数据库中有一个“公司”表和一个“类别”表,每个公司可以有多个类别。我还有一个“CompanyCategories”表,其中记录了每个公司的类别。这些是表格的外观: Company CompanyID, Name Category CategoryI

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

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

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

Company
CompanyID, Name

Category
CategoryID, Name

CompanyCategories
CompanyCategoryID, CompanyID, CategoryID
在SQL中,我通常会应用一个简单的连接和组concatation,以获得如下所示的行:

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中,将它们组合成一个公司对象和一个类别对象列表,或者我应该让数据库进行连接并在视图中包含大量额外信息吗

SELECT * from company_view
CompanyID, Name, CompanyCategoryIDs, CategoryIDs, Categories
1, Dummy Company, 4;6, 2;3, Photographer;Videographer
我对后者的问题是,直截了当很快就会成为问题,而我担心前者的性能。对于一家公司来说,这并不是什么大不了的事,但一次可以加载2000-4000家公司

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


哪个更有效?

当其他ORM已经存在,比如Hibernate时,您有什么理由要运行自己的ORM吗?是的,我构建的核心数据库/数据库对象库旨在运行在桌面应用程序和代号为One的项目上,因此我不能使用第三方库。虽然我从来没有听说过Hibernate,但我会查看一下,看看他们的方法是什么