现在做一WEB项目,数据库中定义了很多代码表,即代码和名称,业务主表中存储的都是代码,查询显示时需要把代码转换成对应的名称,现在有两种做法,一种是查询时直接进行关联查询,把代码对应的名称查询出业,但这样的效率很低,假如主表中有十个代码字段需要转换,就要关联十次。另外一种是先查询出来,然后在页面上写自定义标签进行转换,自定义标签的查询可以从数据库中查询,也可以从缓存中查询,但这样的话,页面端就要多十次http请求,如果查询结果是列表,那就要多几十次http请求
不知道有没有更好的解决方案
现在做一WEB项目,数据库中定义了很多代码表,即代码和名称,业务主表中存储的都是代码,查询显示时需要把代码转换成对应的名称,现在有两种做法,一种是查询时直接进行关联查询,把代码对应的名称查询出业,但这样的效率很低,假如主表中有十个代码字段需要转换,就要关联十次。另外一种是先查询出来,然后在页面上写自定义标签进行转换,自定义标签的查询可以从数据库中查询,也可以从缓存中查询,但这样的话,页面端就要多十次http请求,如果查询结果是列表,那就要多几十次http请求
不知道有没有更好的解决方案
你说的两种方法是这样的:
1.关联查询
如果能够用一个SQL实现,并且SQL的执行效率还可以接受的话,可以采用,这样
应用程序就变得比较简单了,把工作仍给DB去解决。如果SQL拼接比较麻烦,并且查询效率不能接受的话,那就只能用下面的第2种方法了。
2.用自定义标签来做,比如JSP自定义标签
你说的页面端就要多十次http请求,这种情况是不存在的,不用担心(你又不是用JAVASCRIPT在前端发起HTTP请求),
因为JSP自定义标签是在服务端运行的,只有都运行完以后才返回JSP页面。
执行过程是这样的:
客户端REQUEST---〉服务端访问DB--〉FORWARD给JSP页面-->执行JSP内的动态代码(包括自定义标签)--〉把JSP生成的静态HTML返回给客户端
可以把代码表的数据先查询到BEAN中缓存起来,然后自定义标签通过CODE把NAME从BEAN中GET出来,显示到画面上就可以了。如果每次都从DB查询的话,响应速度会降低,而且数据库的连接数也会变大,不是很好,毕竟是代码表,用不着每次都实时去取。