日期:2014-05-18  浏览次数:20684 次

在ssh的数据访问层查询出大量数据,是否应对数据进行封装?
我出现的问题是这样的,在数据访问层用hibernate的Query对象的scroll()方法查询,查询的结果对象是ScrollableResults,这个对象类似jdbc的PreparedStatement,数据大概有10万左右,对于这10万条数据是否封装呢?如果封装,将会花大量的时间来封装,如果不封装,将ScrollableResults对象返回到控制层,那么就失去了分层的意义,大家有没有遇到过类似的问题,指点下,谢谢!

------解决方案--------------------
一般要封装成list<bean>,不然前台显示比较麻烦。
------解决方案--------------------
真的需要一次拿出10W条给别人看?别那么天真好不好...
------解决方案--------------------
引用:
Quote: 引用:

真的需要一次拿出10W条给别人看?别那么天真好不好...

我又没说要显示在页面,我要写excel行不行?


一次取出来写是不可能的,应该要分批拿出来写进excel里,就象分页一样,不要想着一口能吃成胖子,这样只会撑死...
------解决方案--------------------
大数据量操作直接从HibernateSession中拿到JDBC的Connection 然后用最基础的jdbc操作。
------解决方案--------------------
这么多条数据,你不应该一次性全部都取出来,你应该分页呀。
------解决方案--------------------
建议还是分页吧。没人一下子查那么多数据出来的。顶多部分数据浏览完了之后,马上判断是否需要加载更多数据,从而实现动态加载数据。
------解决方案--------------------
这个我一般只考虑内存,可以自己算一下10W的数据大概在会占多少内存,如果数据一条记录的大小本来就很小,也许10W条的记录也不会占太大的内存。如果确实占比较大的内存,可以分页读取。至于封装的时间,数据封装很耗时间吗,我也想了解一下,好像这类型问题真正耗时的一般只涉及到数据库连接和查询语句的性能。