小编kma*_*las的帖子

使用Hibernate 5.2将结果查询为流

从Hibernate 5.2开始,我们可以使用该stream()方法而不是scroll()我们想要获取大量数据.

但是,当使用时scroll(),ScrollableResults我们能够通过在处理它之后从持久化上下文中驱逐对象和/或不时地清除整个会话来钩住检索过程并释放内存.

我的问题:

  1. 现在,如果我们使用该stream()方法,幕后会发生什么?
  2. 是否可以从持久化上下文中逐出对象?
  3. 会议是否定期结算?
  4. 如何实现最佳内存消耗?
  5. 有可能使用例如StatelessSession吗?
  6. 此外,如果我们hibernate.jdbc.fetch_size在JPA属性中设置了一些数字(例如1000),那么它如何与可滚动结果很好地结合?

java hibernate jpa stream scrollableresults

17
推荐指数
2
解决办法
4138
查看次数

RabbitMQ如何将作业拆分为任务并处理结果

我在基于Spring的Web应用程序上有以下用例:

  • 我需要通过以下方式应用Competing Consumers EIP:队列中的消息实际上是属于同一作业的拆分任务.因此,我需要正确跟踪作业的所有任务何时完成及其完成状态,以便将场景保存为COMPLETED或FAILED,记录结果并通过例如电子邮件通知用户

所以,鉴于我上面描述的要求,我的问题是:

  1. 可以用RabbitMQ完成,如果是的话怎么办?

java spring rabbitmq spring-rabbitmq

8
推荐指数
1
解决办法
713
查看次数

将FlatFileItemReader与TaskExecutor结合使用(线程安全)

FlatFileItemReader与一起使用了很多示例TaskExecutor。我在下面提供了示例(都带有XML和Java Config):

我已将自己的XML配置用于大型CSV(GB大小)的开箱即用JpaItemWriter。即使不设置save-state = false或进行任何特殊处理,似乎也没有问题。

现在,FlatFileItemReader已记录为不是线程安全的

我的猜测是,JpaItemWriter通过持久保存集(即如果hashCode()equals()覆盖实体的业务密钥,则没有重复)的集合来“发现”问题。但是,即使这样,由于非线程安全的读取和处理,也无法防止重复。

您能否澄清一下:FlatFileItemReader在分配了TaskExecutor的Tasklet 中使用开箱即用的方法是否正确/正确/安全?不论作家。如果没有,我们如何在理论上解释JPAItemWriter使用a时没有错误?

PS:我上面给出的示例链接FlatFileItemReader与TaskExecutor一起使用,而没有提及所有可能的线程安全问题...

java multithreading flat-file thread-safety spring-batch

7
推荐指数
1
解决办法
1278
查看次数

MongoDB $graphLookup 获取所有级别的子级深嵌套结果

https://www.slideshare.net/mongodb/webinar-working-with-graph-data-in-mongodb 中所示幻灯片 50可以$graphLookup在视图上使用以获得 2 级深度树结构在嵌套格式

我有一个带有树节点的 MongoDB 集合作为具有以下格式的文档:

{ "_id" : { "$oid" : "5b1a952361c6fa3418a15660" }, 
"nodeId" : 23978995, 
"name" : "settings", 
"type" : "Node",
"parentId" : [ 23978893, 23979072, 23979081 ] }
Run Code Online (Sandbox Code Playgroud)

我创建了一个视图,如:

db.createView("treeView", "node", [
{
 $graphLookup: {
    from: "node",
    startWith: "$nodeId",
    connectFromField: "nodeId",
    connectToField: "parentId",
    maxDepth: 0,
    as: "children"
 }
}
]);
Run Code Online (Sandbox Code Playgroud)

我执行图形查找,如:

db.node.aggregate([ 
{ $match: {"nodeId": 23978786 } },
{
 $graphLookup: {
    from: "treeView",
    startWith: "$nodeId",
    connectFromField: "nodeId", …
Run Code Online (Sandbox Code Playgroud)

tree-structure mongodb aggregation-framework

4
推荐指数
1
解决办法
6489
查看次数