`
jeffsang
  • 浏览: 6015 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

J2EE平台SQL查询语句集中管理解决方案(性能预评估、支持集群环境热部署)(一)

    博客分类:
  • java
阅读更多

J2EE企业级软件架构越来越鼓吹N层体系架构,很多架构师陷入了为架构而架构的怪圈,引入越来越多的没有测试过的开源组件,增加越来越多的适配层,导致系统底层架构没有人能驾驭,平台性能问题一旦出现,就找借口是数据量大、并发访问高,通过加硬件救急!


本文先对Java平台SQL查询语句集中管理提出一个实用方案。其背景是目前的J2EE架构大量使用hibernate等ORM框架,SQL/HQL分散在各模块的Java类中,而且很多采用拼SQL的方式(非预编译即PreparedStatement方式执行),导致至少带来如下两个严重问题:


 

  1. SQL性能无法预测,至少运行前无法检测(目前大部分现象都是出现性能问题到生产环境采集SQL,但是由于业务的周期性,存在SQL的覆盖率问题,另外采集毕竟是个相对专业的技术活);
  2. 查询逻辑变化,由于SQL/HQL散落在代码的各个角落,必然导致维护起来很麻烦,且数据库设计人员无法知道程序员的SQL语句是否正确;
  3. 不支持热部署,尤其是在集群部署环境下,部署工作运维人员头疼!
解决思路我画了一个图:



 

大概描述一下:

 

  1. 由core_query表统一管理SQL查询语句;
  2. 开发一个管理界面维护core_sql表,并更新至分布式缓存;
  3. 应用启动时从core_query表加载SQL语句至缓存,应用从缓存中获取SQL语句;
  4. SQL语句采用命名查询的概念,即每条SQL语句都有一个唯一的名称,可以采用名称空间命名;
  5. 应用调用采用spring提供的jdbcTemplate的queryForList(String queryName, Object[] args)方法进行查询,返回类型为:List<Map>,尤其在jstl,显示数据与List<User>完全一致;
  6. 每条SQL语句可以扩展支持查询缓存;

实现目标:
  1. 事前准确评估性能:所有查询语句统一管理,便于在设计开发阶段准确评估性能问题,避免系统运行过程中出现的性能瓶颈;
  2. 查询逻辑变更后维护方便;
  3. 支持热部署,支持集群环境热部署;

一些经验:
  1. 所有select语句(除通过主键load单条记录外),全部采用命名查询,由core_query表统一存储管理;
  2. 单条记录的insert、delete、update和load,可以采用ORM技术,在dao层完成数据库读写;
  3. 批量的delete和update语句,采用命名查询方式;
  4. 专注查询,避免了 SQL 或者 HQL 代码分散于整个应用程序中的情况;

待续...

 

  • 大小: 13.5 KB
1
3
分享到:
评论
2 楼 hxl1013 2012-10-09  
之前用过将SQL集中在properties中,和你的差不多意思~只是存储目的地不同而已
1 楼 iwangxiaodong 2012-10-09  
我用的是MyBatis,它采用了xml来统一管理SQL语句,而且,将xml文件纳入Tomcat监视范围可热插拔修改!

相关推荐

    j2ee+sqlServer2005酒店管理系统

    预订管理模块:包括新预订,预订的查询(包括模糊查询)及预订信息的删除;2.接待管理模块:包括入住登记,入住记录的查询,删除;其中删除功能设有用户权限;3.收银管理模块:包括收银信息的查询,修改,和添加;4....

    j2ee访问SQL数据库的方法和例题

    在J2EE(Java 2 Platform, Enterprise Edition)开发中,与SQL数据库的交互是核心功能之一。本教程将深入探讨如何使用Java JDBC(Java Database Connectivity)驱动来访问SQL Server 2000数据库,同时提供相关的例题...

    J2EE配合SQLServer 实现图书管理系统设计

    在实际开发中,J2EE与SQL Server的组合更适合构建大型、高性能的图书管理系统,J2EE提供强大的后端支持,SQL Server则提供稳定的数据存储。 【图书馆信息化趋势】 随着信息技术的快速发展,图书馆正朝着电子化、...

    j2ee解决方案各种框架解决方案

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级分布式应用程序的平台,它提供了丰富的服务和组件模型,以支持大型企业的复杂需求。本篇将深入探讨J2EE解决方案中涉及的各种框架及其应用...

    J2EE连接SQL Server数据库需要的jar包

    4. **编写SQL语句**:使用`java.sql.Statement`或`java.sql.PreparedStatement`对象来执行SQL查询或更新。预编译的`PreparedStatement`更安全,因为它可以防止SQL注入攻击。 5. **处理结果**:通过`ResultSet`对象...

    J2EE集群设计开发部署(基于IBM+WAS)

    J2EE集群设计开发部署(基于IBM+WAS) J2EE集群设计开发部署(基于IBM+WAS)

    基于J2EE+SQl2005的个人网站

    2. **存储过程**: 预编译的SQL语句集合,可提高性能和安全性。 3. **触发器**: 自动执行的数据库操作,响应特定的数据更改事件。 4. **索引**: 用于加速数据检索的结构。 5. **视图**: 定义的虚拟表,基于一个或多个...

    j2ee+SQL网上书店

    在IT领域,"j2ee+SQL网上书店"是一个基于Java EE(J2EE)平台和SQL数据库技术构建的在线图书销售系统。本文将深入探讨这个系统的构成、工作原理以及涉及的关键技术和知识点。 首先,Java EE(Java Platform, ...

    图书管理系统 sql数据库 j2ee

    这个标签组合在一起,为读者描绘了一个可定制、基于Java的企业级图书管理解决方案,该方案依赖于SQL数据库进行数据操作。 【压缩包子文件的文件名称列表】"LiberSystem"可能是这个图书管理系统的项目名或主文件夹,...

    J2EE程序中的SQL语句自动构造方法讲解

    在J2EE应用程序中,构建SQL语句是数据库操作的核心任务。手动编写这些语句不仅耗时,而且可能导致系统的灵活性不足。为了提高效率和灵活性,我们可以利用编程方式自动化构造SQL语句,特别是针对INSERT、DELETE和...

    Cognos服务器环境集群部署解决方案.pdf

    "Cognos服务器环境集群部署解决方案" Cognos服务器环境集群部署解决方案是指在企业中实现Cognos服务器的高可用性和负载均衡的解决方案。该解决方案主要包括Cognos服务器集群原理、部署方案两个方面的内容。 1、...

    J2EE 热部署

    J2EE热部署是Java企业版(J2EE,现为Java EE)开发中的一个重要概念,它允许开发者在应用程序运行时无需停止服务器就能更新代码,极大地提高了开发效率和减少了系统中断时间。在传统的软件开发中,每当有代码修改,...

    j2ee宠物店建库语句

    了解这些SQL语句对于理解J2EE PetStore项目的工作原理至关重要,同时也为开发者提供了一个实践数据库设计和管理的实例。通过分析和执行这些SQL脚本,开发者可以学习如何根据业务需求来构建复杂的数据库结构,并掌握...

    详解J2EE中SQL语句的自动构造方法

    在J2EE web开发中,SQL语句的自动构造是一个重要的优化策略,它可以极大地提高开发效率和系统的灵活性。本文主要探讨如何自动构造INSERT、DELETE、UPDATE这三种基本的SQL语句,以减轻手动编写SQL语句的工作量。 ...

    J2EE软件开发必备的SQL数据库包

    JDBC提供了一组接口和类,使得Java程序能够执行SQL语句、处理结果集以及管理数据库连接。 在J2EE开发中,当我们要连接到SQL Server 2000时,我们需要一个驱动程序,这就是"SQLserver2000驱动jar包"。这个jar文件...

    J2EE连接SQL2000,MySql数据库驱动文件及方法Microsoft SQL Server JDBC Driver3.0

    在Java编程环境中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级应用的框架,它支持多种数据库的连接,包括Microsoft SQL Server 2000和MySQL。在J2EE应用中,数据库连接通常通过Java Database...

    j2ee图书管理系统

    本系统采用SQL数据库存储数据,并利用MyEclipse作为开发环境,为用户提供了一个高效、稳定的图书信息管理和查询平台。接下来,我们将详细探讨这个系统中的核心知识点。 一、J2EE技术栈 J2EE(Java 2 Platform, ...

    J2EE应用程序中SQL语句的自动构造方法

    借用j2ee中的request.getParameterNames()方法可以读到表单中的所有元素的名称,...现在如果我们写一个方法,传入request对象,再把table_name,col_x,value_x作为参数传入方法,那么我们可以轻松的自动构造SQL语句了。

    基于J2ee+tomcat+sql2005在线考试系统

    本系统以Java企业级开发平台J2EE为核心,搭配轻量级应用服务器Tomcat以及关系型数据库SQL Server 2005,构建了一个高效、稳定、易用的在线考试解决方案。本文将深入探讨这个系统的组成部分、功能特性以及实现技术。 ...

Global site tag (gtag.js) - Google Analytics