记录:jpa返回Iterable而不是list

你可能会好奇为什么仓库返回的是一个 Iterable<T> 而不是 List<T> ,以及为什么需要花费而外的步骤第二步 Iterable<T> 并将它转换为 List<T>.

O/RM 通常会备份 JDBC 结果集中直接返回的实体列表.这样做将改善性能,并允许调用代码在数据库仍在向应用程序返回数据时立即开始执行.不过,从 @Treasanctional 方法中返回将会提交事务并关闭 JDBC 连接,从而关闭结果集.当 O/RM 返回一个List或者其他 Iterable 时,最好迭代列表中所有需要的部分,并在退出事务上下文之前将 Iterable 的内容复制到另一个集合中.这样保证所有实体数据都能在事务关闭之前从数据库中正确读出.

其实,转换放到现在来说并不是一件很难的事:

Iterable<Entity> geted = entityDao.findAll();
List<Entity> list = Lists.newArrays();
geted.forEach(single ->{list.add(single)});
简单的利用 Lambda 可以简单的三行实现。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值