Java 从数据库中获取数据的有效方法

Java 从数据库中获取数据的有效方法,java,jdbc,Java,Jdbc,我想知道哪种查询方式更好、更高效 我使用jdbc从多个表中获取数据(我有10多个表来获取数据)。所有数据都与键相关 为此,我正在考虑两种方法 1) 我正在使用连接从数据库中获取数据 Query s="select a.*,b.*,c.*......";//fetchin all data using joins in single query Preparedstatement ps = con.prepareStatement(query);//con is a connection obj

我想知道哪种查询方式更好、更高效

我使用jdbc从多个表中获取数据(我有10多个表来获取数据)。所有数据都与键相关

为此,我正在考虑两种方法

1) 我正在使用连接从数据库中获取数据

Query s="select a.*,b.*,c.*......";//fetchin all data using joins in single query

Preparedstatement ps = con.prepareStatement(query);//con is a connection object
ResultSet res = ps.executeQuery();
//fetching data from resultset res
con.close(); 
2) 我从每个单独的表中获取数据

Query s="select from table a";
Preparedstatement ps = con.prepareStatement(s);
ResultSet res = ps.executeQuery();
//fetching data from resultset res
Query s1="select from table b";
Preparedstatement ps1 = con.prepareStatement(s1);
ResultSet res1 = ps1.executeQuery();
//fetching data from resultset res1
.............
//continue for all remaining tables
con.close();           
我想知道是否有其他/更好的方法


编辑:我使用了大量的数据。hibernet其他方法怎么样?我认为最好的方法是在一条语句中处理所有SQL内容。正如您建议的版本1)。如果在Java源代码中这对您来说太复杂,您可以在数据库中使用存储函数(我只知道Oracle/MySQL的可能性),并在其中处理更复杂的语句。在Java中,只调用存储函数/过程,并用Java处理结果。这对我来说很好

另一种可能是使用诸如Hibernate之类的ORM。但对于一些小事情来说,这就太过分了:)


使用1),可能会与存储函数结合使用,但并非真正必要,您可以让数据库缓存语句并获得最佳性能。如果您在方法2)中加载一个又一个表,并且必须处理并存储数据。这可能没有那么有效。

您的数据实际链接了吗?或者,它们是不同的概念数据集,例如,您正在查询1中加载产品,比如说,查询2、3和4中的尺寸、颜色?如果是后者,那么不同的查询可能是最好的,避免了由算术连接构造引起的问题


编辑-如果表确实相关,那么连接听起来很合适,只要您使用有效的查询。在您的选择中,确保只回拉您需要的字段(忽略“额外”字段)以提高性能。

我有大量的数据。ORM是大数据的最佳选择没有ORM只是为了抽象。什么是大的?我用一个集合测试了一个函数调用,结果是19.200行,每个字段中使用8字节的数据,30个字段,并用大约100毫秒的时间提取结果。在本地SSD上使用Oracle12c和Java7:)是的,大约15000行。这样会更好。对我来说,编写sql查询需要很长时间,如果您能提供一些有关sql的详细信息,我可以为您提供一些提示;)对于海量数据和使用Hibernate,我发现了一些想法: