RowSet,CachedRowSet等的实现

直到今天,我在处理查询结果时正在使用ResultSet 。 但今天我读了一些关于RowSetCachedRowset ,我意识到它们可以更好地满足我的目的。 虽然在所有的例子中我都读到了RowSetCachedRowSet被称为对象的地方,当我在我的代码中自己尝试它时,我意识到这些是接口,在示例中它们使用了这些接口的一些实现。

现在我的问题是我在哪里找到这些实现,是否有正式的东西?

我需要下载它们还是它们带有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许可证

RowSetCachedRowSet由JDBC驱动程序实现。

您的数据库提供程序提供驱动程序,例如Oracle或MySql 。 但是,这些驱动程序只与实际数据库结合才有意义。

它配备了JDK。

在JDK 10中,jar是:jdk-10.0.2 / lib / jrt-fs.jar

jar中的包/类是:javax.sql.RowSet.class

丹尼尔皮涅罗

danielpm1982@gmail.com

在此处输入图像描述

在此处输入图像描述