一种基于缓加载技术展示大量业务对象的方法

文档序号:8299152阅读:235来源:国知局
一种基于缓加载技术展示大量业务对象的方法
【技术领域】
[0001]本发明涉及一种计算机通信技术,具体涉及是一种基于缓加载技术展示大量业务对象的方法。
【背景技术】
[0002]传统的实现方式一般有以下两种:
[0003]1.基于数据库的查询分页方式
[0004]数据库提供开发接口支持查询分页的功能,在查询数据过程中提供查询的起始位置索引和结束位置索引,数据库即可以查询出相应位置区间的数据。分页显示某页数据时,根据当前的页码和每页的显示条数计算出数据库查询需要的起始位置索引和结束位置索引,传入起始位置索引和结束位置索引查询数据,把数据转换成业务对象,在表格控件中展示业务对象,实现分页展示的效果。这种方法具有效率高、并发性好等优点,被广泛应用在互联网领域等简单数据展示的场景中。
[0005]2.一次性加载并应用业务规则的内存分页方式
[0006]在具有复杂业务规则的场景下,展示某一页的业务对象并实现分页效果,需要一次性从数据库表中加载所有可能满足条件的数据,把数据转换为业务对象,对每一个业务对象应用业务规则,过滤出符合条件的业务对象,在内存中再对符合条件的业务对象实现分页后,在表格控件中展示。这种方法适用于业务规则复杂,数据量不大的场景,由于所有的数据已经在首次加载时全部加载并应用业务规则过滤过,可以把过滤后的业务对象存放到缓存中,在翻页时不需要重新查询和应用业务规则,直接从缓存中获取展示的业务对象。这种方式给用户的体验是首次加载慢,翻页较快,在有大数据量和业务规则复杂时,首次显示数据等待时间漫长。
[0007]在上述两种方法中,第一种方法虽然效率高,但是没有办法对每条数据运用业务规则,也没有办法加载复杂的业务属性。第二种方法解决了业务对象加载复杂属性的和运用业务规则的问题,但是加载每页数据时需要首先全部加载所有的数据并应用业务规则,这个过程比较耗时,显示数据所需等待的时间与数据量大小成线性关系。因此以上两种方法都没有很好的解决大量业务对象数据的表格展示问题。
[0008]中国专利CN102411585A公开了一种网页分页数据预加载方法和系统,但其不能在满足复杂业务对象应用业务规则的需要的前提下,同时解决传统方式所存在的数据量大导致表格中数据展示慢的问题。
[0009]目前,关于一种解决在使用复杂的业务对象的同时应用业务规则,同时提升大量复杂业务对象在表格中显示性能的方法还未见相关报道。

【发明内容】

[0010]本发明为克服现有技术中的不足,提供了一种基于缓加载技术展示大量业务对象的方法。
[0011]为实现上述目的,本发明采取了如下技术方案:
[0012]一种基于缓加载技术展示大量业务对象的方法,包括以下步骤:
[0013](I)、服务器端Servlet准备查询的前置条件;
[0014](2)、客户端向服务器端发送请求,即客户端向服务器端传入当前请求的参数;
[0015](3)、服务器端Servlet获取步骤(2)中请求的参数并采取措施;
[0016](4)、服务器端Servlet根据步骤⑴中的前置条件向业务层提交查询请求,业务组件根据记录的查询游标从数据库查询指定数量的数据,对查询后的数据进行权限校验,并返回通过权限校验的数据;
[0017](5)、服务器端Servlet接收到业务组件返回的查询结果或者直接从缓存中获取的结果,进行格式转换,即把业务数据转换成人可以读懂的数据,并返回数据到客户端;
[0018]¢)、客户端获取返回的结果,展示数据到表格中,更新界面的状态,使原界面在请求数据过程中不可操作的界面在获取数据后变为可操作状态,客户端的表格控件根据返回结果数量与当前页面已经展示数据数量的关系,判断继续提交请求或者结束请求。
[0019]进一步的,步骤(I)中的前置条件具体为建立数据库连接、准备缓存、准备客户端请求的过滤、加载格式化配置文件、缓存查询的游标数据、上一次查询的结果,上次查询后记录的查询游标。
[0020]进一步的,步骤(2)中的当前请求的参数包括请求场景、是否有新请求、是否请求新页、请求的起始页码和请求条数。
[0021]进一步的,步骤(3)中的服务器端Servlet采取的措施包括:根据请求场景从缓存中获取前置条件、根据是否新请求重置查询结果、根据是否请求新页确定缓存的查询结构是否有足够的数据、根据请求的起始页码和请求条数确定应该返回缓存中的哪部分数据。
[0022]进一步的,步骤(2)中客户端向服务器端发送请求时,采用ajax异步加载的方式传递展示业务对象需要的参数。
[0023]进一步的,步骤(4)中的服务器端Servlet根据前置条件向业务层提交查询请求,业务组件移动查询游标查询数据,进行权限过滤后并返回结果的具体步骤为:业务组件从数据库中加载数据,转换为业务对象,对业务对象应用业务规则进行过滤,返回符合业务规则的业务对象。
[0024]进一步的,步骤(6)中服务器端Servlet接收到业务组件返回的查询结果或者直接从缓存中获取的结果进行格式化并返回到客户端的具体步骤为:数据展示层把业务对象格式化可以展示的json格式数据传送到客户端,客户端浏览器在表格控件中展示获取的数据。
[0025]进一步的,所述的客户端每次向服务器端请求数据,服务器端的业务组件记录上次请求的位置,在上次请求位置的基础上继续加载一定量的数据,转换为业务对象,应用业务规则;如果有符合业务规则的业务对象,则返回这些数据对象;如果没有符合业务规则的业务对象,业务组件继续循环加载数据,直至有符合条件的业务对象,或者所有数据全部加载完毕。
[0026]进一步的,所述的业务组件记录所有已加载过并且符合业务规则的业务对象,并存储在缓存中。
[0027]进一步的,所述的客户端接收到返回结果后,根据返回结果中的数据数量、表格中已经展示的业务对象数量、当前需要展示的业务对象数量计算出可以追加到表格中的数据数量,把数据追加到表格中,并根据表格数据的数量和当前需要展示的对象数量决定是否再次向服务器端发送请求,直到表格中的数量满足当前需要展示的数量或者服务器端查询结束。
[0028]本发明公开的的一种基于缓加载技术展示大量业务对象的方法,具有以下有益效果:
[0029]1.分批次加载复杂业务对象的方式,在满足用户对数据需求的前提下减轻了数据库的压力,减少了业务组件应用业务规则的时间。
[0030]2.结合Ajax异步加载的特点展示复杂业务对象的数据,每次展示一部分数据,减少了用户的等待时间,提高了用户体验。
[0031]3.该技术方法不仅适用于大量复杂业务对象的数据展示,同样适用于简单业务对象的数据展示。
【附图说明】
[0032]图1是服务器端的业务对象获取逻辑流程图;
[0033]图2是客户端的ajax的数据展示逻辑图。
【具体实施方式】
[0034]下面结合实施例并参照附图对本发明作进一步描述。
[0035]业务对象在数据库中的存储形式为二维表,业务对象对应数据库中的表,业务对象的属性对应数据库表中的字段。在表格控件中展示业务对象也是以二维表格的形式展不,表格控件中的每一行代表一个业务对象,表格控件列中的值代表该业务对象的属性。
[0036]业务对象在表格控件中展示时,使用ajax异步加载的方式向服务器端发送请求,传递展示业务对象需要的参数。服务器端接收客户端传入的参数,对参数进行简单的处理,调用业务组件获取业务对象。业务组件从数据库中加载数据,转换为业务对象,应用业务规则进行过滤,返回过滤后的业务对象。数据展示层把业务对象格式化可以展示的json数据传送到客户端,客户端浏览器在表格控件中展示获取的数据。
[0037]业务组件在对所有的业务对象应用业务规则的耗时随着数据量成线性变化。为了使表格控件以最短时间展示复杂的业务对象数据,每次向服务器端请求数据,服务器端的业务组件记录上次请求的位置,在上次请求位置的基础上继续加载一定量的数据,转换为业务对象,应用业务规则。如果有符合业务规则的业务对象,则返回这些业务对象,如果没有符合业务规则的业务对象,业务组件继续循环加载数据。直至有符合条件的业务对象,或者所有数据全部加载完毕。业务组件记录所有符合业务规则的业务对象,存储在缓存中,以便于在下次请求时直接从缓存中获取数据,从而减少查询和应用业务规则的时间。
[0038]表格控件需要展示业务对象时,就会向服务器端发送请求,传递获取业务对象所需的参数。当服务器端有返回结果时,表格控件根据需要在表格中追加数据。表格控件追加数据后根据要展示的业务对象数量和已经展示的业务对象数量判断是否还需要再次向服务器端发送请求。直到所需的业务对象已经足够或者服务器端查询结束。
[0039]具体的说,请参见图1,图1是服务器端的业务对象获取逻辑流程图。服务器端servlet首先准备查询的前置条件,服务器端servlet接收由客户端传来的请求的参数(根据请求场景,从缓存中获取前置条件,根据是否是新请求重置查询结果,根据是否是新页确定缓存的查询结构是否有足够的数据,根据起始页码和请求条数确定应该返回缓存中的哪部分数据)。如果请求为新请求,则清空缓存数据,判断请求是否为新页;如果请求不是新请求,则从缓存中提取数据,然后判断是否为新页。如果是新页则设置符合条件的数据集,否则判断结果集是否有值。设置完符合条件的数据集之后,判断是否搜索,是则执行搜索并设置数据集并判断是否数据集足够大,否则直接判断是否数据集足够大。如果数据集足够大则计算可取的数据长度,否则判断结果集是否有值。计算可取的数据长度之后判断是否需要排序,是则进行数据排序并取结果集,否则直接取结果集。
[0040]服务器端servlet根据前置条件向业务层提交查询请求,业务组件根据记录的查询游标从数据库查询指定数量的数据,对查询后的数据进行权限校验,并返回通过权限校验的数据。服务器端接收客户端传入的参数,对参数进行简单的处理,调用业务组件获取业务对象,业务组件从数据库中加载数据,转换为业务对象,对业务对象应用业务规则进行过滤,返回符合规则的业务对象。过滤过程包括:判断结果集是否有值,是则获取结果总数,否则执行一次查询。判断查询结果是否有值,是则查询结果集并加入到缓存,否则获取结果总数。判断是否搜索,是则对结果进行搜索并判断结果集是否有值,并循环;否则直接判断结果集是否有值,并循环。如果结果集有值则获取结果总数,否则循环执行查询。
[0
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1