Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有命名Jdbc查询或结果集的Hazelcast Jet?_Java_Hazelcast_Hazelcast Jet - Fatal编程技术网

Java 具有命名Jdbc查询或结果集的Hazelcast Jet?

Java 具有命名Jdbc查询或结果集的Hazelcast Jet?,java,hazelcast,hazelcast-jet,Java,Hazelcast,Hazelcast Jet,我是Hazelcast Jet的新手,我正在使用SpringJdbcTemplate执行我的查询,该查询在查询中使用命名参数,但我不确定如何将其用于Hazelcast Jet 例如,Hazelcast的工作方式如下: Pipeline p = Pipeline.create(); p.readFrom(Sources.jdbc( () -> DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql&quo

我是Hazelcast Jet的新手,我正在使用Spring
JdbcTemplate
执行我的查询,该查询在查询中使用命名参数,但我不确定如何将其用于Hazelcast Jet

例如,Hazelcast的工作方式如下:

Pipeline p = Pipeline.create();
p.readFrom(Sources.jdbc(
    () -> DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"),
    (con, parallelism, index) -> {
        PreparedStatement stmt = con.prepareStatement(
              "SELECT * FROM person WHERE MOD(id, ?) = ?)");
        stmt.setInt(1, parallelism);
        stmt.setInt(2, index);
        return stmt.executeQuery();
    },
    resultSet -> new Person(resultSet.getInt(1), resultSet.getString(2))
)).writeTo(Sinks.logger());
但是我不想使用
而是想使用命名查询,比如
选择*FROM person,其中MOD(id,:id)=:id)
。Hazelcast是否支持命名查询或Spring
JdbcTemplate

同样在
Sources
中,我们可以直接将
ResultSet
作为源传递吗?有很多来源,但我没有找到任何“结果集”

例如

p.readFrom(Sources.resultSet()//类似的内容
如果可能的话,请帮我解决这个问题。

我假设“命名JDBC查询”的意思是“命名参数”

它不是JDBC API的标准功能,而是Spring框架提供的便利。Hazelcast Jet不支持它。我们目前正在研究如何在Hazelcast Jet和Spring之间提供更好的集成,这是我们关注的问题之一。

我假设“命名JDBC查询”的意思是“命名参数”


它不是JDBC API的标准功能,它是Spring框架提供的一种便利。Hazelcast Jet不支持它。我们目前正在研究如何在Hazelcast Jet和Spring之间提供更好的集成,这是我们关注的问题之一。

我将回答问题的另一部分:技术上不可能无法创建
ResultSet
source。查询必须在集群上执行,您不能在客户端上执行查询并将其发送到集群以获取行。这就是为什么JDBC源要求您使用SQL语句和lambda来创建连接,但连接将在集群中创建并用于执行e查询。

我将回答问题的另一部分:从技术上讲,不可能创建
ResultSet
源。查询必须在集群上执行,您无法在客户端上执行查询并将其发送到集群以获取行。这就是为什么JDBC源要求您提供SQL语句和lambda来创建连接,但该连接将在群集中创建并用于执行查询。

您能否澄清一下您的意思:“[…]我们可以直接作为源传递Resultset吗?”?您试图实现什么?在我的应用程序中,我使用的是Spring JdbcTemplate,它返回我的Resultset,我想使用hazelcast jet管道对其进行一些过滤、聚合和分组,因此如何实现它,因为hazelcast jet直接不支持Resultset作为源或命名参数。没有用于此的API。主要原因:整个结果集必须在提交管道作业的实例的内存中具体化。通常,结果集连接到基础数据库。您可以创建一个断开连接的表示:它称为行集。但您必须在内存中具体化整个数据集。这可能适用于toy examples,但它对于任何有意义的数据大小都不太实用。您使用JdbcTemplate的动机是什么?您想要/需要使用命名参数吗?还是使用Spring管理的连接池?我们目前正在研究如何改进Spring集成,您的示例可以帮助您更好地理解这个问题。是的,我们的连接池由spring管理,我们的整个应用程序建立在JDBCTemaple上,作为数据库连接,查询和参数一切都是动态的,将由用户编写(因此用户不必再次编写参数或记录参数),因为查询可能相当大,有200、300或更多行,这就像创建动态数据集(BI报告),我可以从JDBCTemplate中获取列表(可与Hazelcast源代码一起使用),但它也将存储在内存中,这不是一个好主意。您能否澄清一下您的意思:“[…]我们可以直接将结果集作为源代码传递吗?”?您试图实现什么?在我的应用程序中,我使用的是Spring JdbcTemplate,它返回我的Resultset,我想使用hazelcast jet管道对其进行一些过滤、聚合和分组,因此如何实现它,因为hazelcast jet直接不支持Resultset作为源或命名参数。没有用于此的API。主要原因:整个结果集必须在提交管道作业的实例的内存中具体化。通常,结果集连接到基础数据库。您可以创建一个断开连接的表示:它称为行集。但您必须在内存中具体化整个数据集。这可能适用于toy examples,但它对于任何有意义的数据大小都不太实用。您使用JdbcTemplate的动机是什么?您想要/需要使用命名参数吗?还是使用Spring管理的连接池?我们目前正在研究如何改进Spring集成,您的示例可以帮助您更好地理解这个问题。是的,我们的连接池由spring管理,我们的整个应用程序建立在JDBCTemaple上,作为数据库连接,查询和参数一切都是动态的,将由用户编写(因此用户不必再次编写参数或记录参数),因为查询可能相当大,有200、300或更多行,这就像创建动态数据集(BI报告),我可以从JDBCTemplate中获得列表(可以与Hazelcast源代码一起使用),但它也会存储在内存中,这不是一个好主意。
p.readFrom(Sources.resultSet(<Resultset Object>) //something like this