2012-09-26 39 views
1

我目前有一个默认的Spring架构:Repostiory,Service,Controller(Spring WebMVC),JacksonJson Mapper作为“视图”。我所有的存储库/服务/控制器方法是这样的:如何使用Spring MVC和Spring JdbcTemplate RowCallbackHandler和流结果?

public Collection<Pet> findPetsWithName(String name) {} 

所以基本上每一层中检索数据,做了一些计算,并返回到下一层。

随着数据大小的增加,我正在使用Spring JdbcTemplate,fetchsize设置和RowCallbackHandler来“流”数据库结果,而不是一次全部获取数据。

我现在的问题是:我是否可以申请“回调”的方法来所有层,不仅存储库层,使所有的结果,但到返回它们作为收藏的一个回调函数instread?它是否适用于SpringMVC视图?我想,我想最终的链式回调:

RowCallbackHandler(ServiceCallbackHandler(ControllerCallbackHandler(SpringViewHandler(HttpSerlvetResponse))))

public void findPetsWithName(String name, Callback<Pet> callback) {} 

有没有人用这种方法经历?是否有现有的模式或模板?我认为对大数据量来说只有一个好处,因为设计起来比较困难。

回答

0

唯一的一次,我不得不使用从行映射到响应流数据是,当我们在数据库中存储大量加密的二进制数据,并希望它流作为-是,通过我们的瘦客户端进行解密。

假设您正在考虑这种情况,您应该使用ResultSetExtractor。 您可以从回调中的结果集中获取流(假设您的数据类型为blob等价物),并将其传递给响应输出流,该流将被接受为您的repo方法的参数。

让我知道,如果你正在寻找实现,其中每一行应该被映射到的对象的设计和回拨机制应该通过对象返回给高层一个接一个。