これが非常に大きな結果セットに関するものでない限り、次の理由により、 JDBC 全体ResultSet
をメモリに消費し、java.util.List
ではなく で操作する方がおそらくはるかに優れています。java.sql.ResultSet
- リストは開発者にとってより使いやすくなっています
- データベース リソースはすぐに解放できます (エラーが発生しにくくなります)。
- Java で 1000 行のメモリが不足することはおそらくないでしょう。
ResultSet
さまざまな JDBC ドライバーがこの機能を微妙に異なる方法で実装しているため、 scrollable で操作するときに多くの間違いを犯す可能性があります。
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 :
JdbcTemplate template = // ...
List result = template.query("SELECT * FROM Person", rowMapper);