我有僱員表和實體類的,
我的任務是這樣的,我需要的結果集(類滾動)兩次內的職員表的數據,
在這樣的情況下,第二次使用數據會有什麼好處 - >請教JDBC結果
1:創建實體類的實例,並在第一次迭代結果集時將其存儲在List中。
或
2:第一次迭代後,調用結果集的第一個()方法返回第一行並第二次使用數據。
哪個選項會消耗更少的時間和資源。
如果您有更好的建議,請提供。
謝謝。
我有僱員表和實體類的,
我的任務是這樣的,我需要的結果集(類滾動)兩次內的職員表的數據,
在這樣的情況下,第二次使用數據會有什麼好處 - >請教JDBC結果
1:創建實體類的實例,並在第一次迭代結果集時將其存儲在List中。
或
2:第一次迭代後,調用結果集的第一個()方法返回第一行並第二次使用數據。
哪個選項會消耗更少的時間和資源。
如果您有更好的建議,請提供。
謝謝。
除非這是對非常大的結果集,你可能好得多消耗整個JDBC ResultSet
到內存中,並在java.util.List
上java.sql.ResultSet
這些原因操作,而不是:
ResultSet
操作時,可以進行很多很多錯誤,因爲不同的JDBC驅動程序只是巧妙地實現這個功能不同可以使用工具用於消費JDBC結果集。例如Apache DbUtils:
QueryRunner run = new QueryRunner(dataSource);
ResultSetHandler<List<Person>> h
= new BeanListHandler<Person>(Person.class);
List<Person> persons = run.query("SELECT * FROM Person", h);
jOOQ(3.0語法):
List<Person> list =
DSL.using(connection, sqldialect)
.fetch("SELECT * FROM Person");
.into(Person.class);
JdbcTemplate template = // ...
List result = template.query("SELECT * FROM Person", rowMapper);
緩存從數據庫中檢索數據。即使驅動程序在自己的級別提供緩存,它總是比輪詢更好。如果不再需要,你可以隨時撤回。
關於緩存數據的任何furthur建議 – 2012-04-05 08:10:44
也許使用主鍵的Map
員工會有幫助嗎?
如果你會描述爲什麼你認爲你需要不止一次迭代列表,那麼比我們看到有更好的算法可以擺脫第二個位置。
結果集有多大(即有多少條記錄?) – 2012-04-05 08:00:44
大約有1000行。 – 2012-04-05 08:02:07
那些記錄並不多。您可以將它們加載到內存中,並輕鬆地在內存中進行表示... – 2012-04-05 08:12:21