RowSet,CachedRowSet等的实现
直到今天,我在处理查询结果时正在使用ResultSet
。 但今天我读了一些关于RowSet
和CachedRowset
,我意识到它们可以更好地满足我的目的。 虽然在所有的例子中我都读到了RowSet
和CachedRowSet
被称为对象的地方,当我在我的代码中自己尝试它时,我意识到这些是接口,在示例中它们使用了这些接口的一些实现。
现在我的问题是我在哪里找到这些实现,是否有正式的东西?
我需要下载它们还是它们带有JDK?
这些实现是特定于JRE的。 Oracle(Sun)JRE附带了许多实现:
-
com.sun.rowset.JdbcRowSetImpl
-
com.sun.rowset.CachedRowSetImpl
-
com.sun.rowset.WebRowSetImpl
-
com.sun.rowset.FilteredRowSetImpl
-
com.sun.rowset.JoinRowSetImpl
在Java 1.6及之前,您需要自己构建它们:
JdbcRowSet rowSet = new JdbcRowSetImpl(); rowSet.setDataSourceName("jdbc/dbname"); // Or rowSet.setUrl("jdbc:vendor://host:port/dbname"); rowSet.setUsername("username"); rowSet.setPassword("password"); rowSet.setCommand("SELECT id, name, value FROM tbl"); rowSet.execute(); while (rowSet.next()) { // ... }
在Java 1.7中,您可以通过javax.sql.rowset
工厂获取它们,这样您就不依赖于底层JRE实现,并且您可以在必要时微调选择的实现:
RowSetFactory rowSetFactory = RowSetProvider.newFactory(); JdbcRowSet rowSet = rowSetFactory.createJdbcRowSet(); // ...
它只提供在构造时传递ResultSet
的可能性。 这些实现不附带普通的JDBC驱动程序(至少MySQL和PostgreSQL都没有)。 它基本上是JDBC API上的一个额外(可选)层,因为包名称前缀为javax
提示。
请注意,如果通过查看行集来实现这一目标,那么您可能需要考虑查看ORM,例如Hibernate或JPA。 它们提供第一级/第二级缓存可能性。
也可以看看:
- JDBC指南 – 第10章 – RowSet
- JDBC RowSet教程 ,由Oracle提供
- Java 8
javax.sql.rowset
包摘要 - 用于Oracle com.sun.rowset实现的OpenJDK 8中的源代码,具有Classpathexception的 Gnu GPL 2许可证
RowSet
和CachedRowSet
由JDBC驱动程序实现。
您的数据库提供程序提供驱动程序,例如Oracle或MySql 。 但是,这些驱动程序只与实际数据库结合才有意义。
它配备了JDK。
在JDK 10中,jar是:jdk-10.0.2 / lib / jrt-fs.jar
jar中的包/类是:javax.sql.RowSet.class
丹尼尔皮涅罗