`
pipilu
  • 浏览: 40446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习JdbcProxy应用

    博客分类:
  • Java
阅读更多
  今天学到了一个新的工具:JdbcProxy,关于它的介绍可以看这里:http://www.ibm.com/developerworks/cn/java/j-lo-jdbcproxy/?S_TACT=105AGX52&S_CMP=tec-csdn

  我感觉这个工具的最大用处就是构造测试数据。目前可以想到的应用场景是这样的:设计好测试用例之后,测试人员先根据测试用例连接实际的数据库执行一遍,通过此过程用JdbcProxy生成JDBC调用过程。之后把生成的调用过程文件放到http服务器下(之前要用JdbcProxy中的StubTracerMerger类来合并成一个xml文件),修改数据库连接的配置,改成连接那个HTTP服务,这样测试人员可以在脱离数据库的情况下重复进行那个测试过程。JdbcProxy在这里起到了一个“录制-回放”的作用。

  为什么要脱离数据库呢,这样一个明显的好处就是:你的测试数据在一个文件里,这样每个测试用例一个文件,大家各测各的,相互不影响。即使是只有一个测试人员,他在测试过程中,前面的测试也不致于影响后面测试时的数据。总之据我了解,测试人员在测程序时,构造数据都要构造一阵,耽误不少时间,有时候为了图省事,可能构造的数据不合要求,害处更大。
  其实,按我上面描述的过程,似乎也不省事,但肯定有办法减少手工操作。以后确定了一个框架后我再补充在后面。

  下面我想说一下实践过程,上面提供的网址里已经说的很详细了,但为方便实践,我还是自己再总结一下。
  首先下载下来jar包(http://jdbcproxy.sourceforge.net/)JdbcProxy-1.1.jar。(在http://www.mvnrepository.com/上没有找到这个包的pom)
  其次,录制DAO调用过程。
  写类似下面的程序:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; 

public class JdbcProxyDemo { 
    public static void main(String args[]) throws Exception {
        String driver = "nl.griffelservices.proxy.jdbc.oracle.StubTracerDriver";
        String url = "jdbc:stubtracer:output:com.mysql.jdbc.Driver:jdbc:mysql://localhost:3306/test?user=root&password=root";
        Class.forName(driver); 
        Connection connection = DriverManager.getConnection(url); 
        Statement stmt = connection.createStatement(); 
        stmt.executeUpdate("delete from PERSON");//delete
        stmt.executeUpdate("insert into PERSON values ('1', 'wowo')");
        stmt.executeUpdate("insert into PERSON values ('2', 'pipilu')"); //insert 
        stmt.executeUpdate("update PERSON SET name = 'Good Night'"); //update
        ResultSet rs = stmt.executeQuery("SELECT * FROM PERSON");//select
        while (rs.next()) { 
            System.out.println(rs.getString("NAME")); 
        } 
        rs.close(); 
        stmt.close(); 
        connection.close(); 
    } 
 }


  这里面修改url可以达到不同的功能:
  1、生成方便人阅读的JDBC调用过程记录,则采用下面格式的url
jdbc:tracer:<filename>:<driver>:<url>

  2、生成方便软件“阅读”的JDBC调用过程记录,采用下面的格式:
jdbc:stubtracer:<foldername>:<driver>:<url>

  3、访问部署到http服务器上的JDBC调用过程,采用如下格式:
jdbc:stub:<hostname>:<port>:<timeout>:<filename>


  上面的示例程序是直接生成方便软件阅读的JDBC调用过程记录。生成到程序执行目录下的output文件夹下了(多个request_XX_XX.txt和response_XX_XX.txt文件)。
  之后要把生成的文件合并为一个xml,在JdbcProxy-1.1.jar中有办这件事儿的工具:
  nl.griffelservices.proxy.stub.StubTracerMerger
  文件名可以随意取,我想,以用例的编号命名可能好一些。
  把合并完成的xml(比如output.xml)放到http服务器上,确定可以访问到。
  比如我把那个文件放到了我的Tomcat的webapps\ROOT下(你可以放到Apache下或IIS下)。那么,我启动了tomcat后,应该可以通过http://localhost:8008/output.xml访问到这个文件。
  现在就可以测试一下效果了,用你的程序直接访问这个http服务,把上面示例程序中的url改为“jdbc:stub:localhost:8008:1000:output.xml”(只需改这一处),然后运行程序,程序在不访问数据库的情况下成功执行。修改程序中的sql试一下——报错了!当然,因为这个并不能代替数据库,它只是把JDBC调用过程录下来了而已。
  
分享到:
评论

相关推荐

    JDBC,MySQL和JDBCProxy联合实现Java数据库.pdf

    MySQL 是一种流行的关系型数据库管理系统,而 JDBCProxy 则是一个开源的 JDBC 代理项目,能够记录 Java 应用程序的数据库访问过程并将其重现。 JDBC 的主要功能是提供了一种统一的方式来访问不同的关系型数据库,...

    JdbcProxy - To trace and stub JDBC calls-开源

    JdbcProxy是JDBC 2.0驱动程序,可以帮助调试或测试应用程序。 该驱动程序可以包装另一个JDBC驱动程序,以调试应用程序完成的JDBC调用。 该驱动程序还可以模拟另一个JDBC驱动程序,以在没有数据库的情况下测试应用...

    JdbcProxyTest

    JdbcProxy 示例程序 JdbcProxy 可以理解为 JDBC 代理,是一个开源的 JDBC 项目。...本文将以一个具体的 Java 应用为例,演示如何使用 JdbcProxy 记录和重现 JDBC 访问,实现 Java 应用的测试工作。

    Java 代理(proxy)模式

    代理模式(Proxy Pattern)  代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。...

    移动开发_Android_基础框架_SAFApi组件开发_1742847786.zip

    移动开发_Android_基础框架_SAFApi组件开发_1742847786.zip

    《基于YOLOv8的气功动作识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    FourOnes_jquerybootstraptenine_1742855636.zip

    app开发

    MobaXterm安装包

    MobaXterm安装包

    30页-清华科技园智慧园区方案.pdf

    智慧园区,作为智慧城市的重要组成部分,正借助5G、云计算、大数据等前沿技术,实现园区的全面智慧化升级。它不仅仅是技术的堆砌,更是园区管理模式和服务理念的革新。智慧园区通过构建统一的大数据平台,实现园区内各类数据的整合与共享,让管理者能够全局掌握园区运营状态,实现人、事、物的穿透式管理。 在5G技术的加持下,智慧园区的特色应用得以更加广泛和深入地开展。从便捷通行到智慧物联,从楼宇自控到企业服务,5G智慧园区为园区内的企业和员工提供了前所未有的便捷与高效。刷脸通行、车牌识别、访客线上预约等技术的应用,不仅提升了园区的安全等级,更让通行变得简单快捷。而智慧垃圾桶、路灯等物联网设备的引入,则让园区的环境管理更加智能化、精细化。此外,5G智慧园区还通过无人机巡检、无人驾驶等创新应用,为园区的安全管理、物资配送等方面带来了全新的解决方案。 值得一提的是,智慧园区的建设并不仅仅局限于硬件设施的升级,更在于服务模式的创新。通过园区APP、在线服务平台等渠道,智慧园区实现了园区服务的线上化、便捷化,让企业和员工能够随时随地享受到园区提供的各类服务。这种以人为本的服务理念,不仅提升了园区的整体服务水平,更增强了园区的吸引力和竞争力。总之,5G智慧园区的建设为园区的可持续发展注入了新的活力,也为未来城市的发展提供了有益的借鉴和启示。

    C基础day9 思维导图

    C基础day9 思维导图

    Simulink仿真实现物体终端速度与信号处理的MATLAB代码解析(复现论文或解决问题,含详细可运行代码及解释)

    内容概要:本文档详细介绍了使用Simulink进行两个物理问题的仿真建模。第一个任务是模拟一个球体从高空落下的终端速度,通过建立重力与空气阻力的平衡模型,利用MATLAB代码构建Simulink模型,最终计算出终端速度。第二个任务是基于提供的加速度数据,通过两次积分计算物体的速度和位置,同样使用MATLAB代码实现了Simulink模型。每个任务都包含了详细的数学公式推导、参数设置以及Simulink模块的具体连接方法。仿真结果显示,终端速度约为53.6 m/s,而1秒后的速度和位置则取决于输入的加速度数据。 适合人群:对Simulink仿真工具感兴趣的工程技术人员、科研工作者以及相关专业的学生。 使用场景及目标:适用于需要进行物理系统仿真、信号处理的研究项目或教学实验。主要目标是帮助读者掌握Simulink的基本操作和应用技巧,同时加深对物理现象的理解。 其他说明:文中提供了完整的MATLAB代码,方便读者直接复制并在自己的环境中运行测试。此外,还给出了详细的中文注释,有助于初学者更好地理解各个步骤的功能和意义。

    《基于YOLOv8的隧道安全监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    音乐_安卓开发_本地音乐_播放器应用μsic_1742860435.zip

    音乐_安卓开发_本地音乐_播放器应用μsic_1742860435.zip

    Lightweight and Efficient: The backbone of the TTS Diffusion Transformer has only 0.45B param

    Lightweight and Efficient: The backbone of the TTS Diffusion Transformer has only 0.45B parameters. Ultra High-Quality Voice Cloning: See the demo video below! We also report results of recent TTS models on the Seed test sets in the following table. Bilingual Support: Supports both Chinese and English, and code-switching. Controllable: Supports accent intensity control and fine-grained pronunciation/duration adjustment (coming soon).

    博客_ionic20_移动端_应用开发模板_1742847485.zip

    博客_ionic20_移动端_应用开发模板_1742847485.zip

    《基于YOLOv8的传送带异物检测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    中继增强OFDMA网络中的公平半分布式资源分配方案实现与性能评估(复现论文,含详细可运行代码及解释)

    内容概要:本文详细介绍了复现论文《Fair Semi-distributed Resource Allocation Scheme over Relay-Enhanced OFDMA Networks》的代码实现。主要内容包括系统模型构建(定义基站、中继站、移动终端及其关联关系)、资源分配算法(半分布式资源分配、改进的两阶段资源分配)和公平性调度机制(吞吐量计算、效用函数)。此外,还进行了仿真实验,对比了所提方案与集中式方案和机会主义方案在吞吐量、公平性和反馈开销方面的性能表现。最后,通过随机分布场景下的仿真进一步验证了方案的有效性和实际部署的可行性。 适合人群:通信工程专业研究人员、无线网络优化工程师、对OFDMA技术和资源分配算法感兴趣的学者和技术人员。 使用场景及目标:适用于研究和开发中继增强的OFDMA网络资源分配算法,旨在提高系统的吞吐量和公平性,降低反馈开销。目标是在大规模网络环境中实现高效、公平的资源分配。 其他说明:文中提供了详细的代码实现步骤和仿真结果,有助于读者深入理解算法原理并进行实验验证。

    2025大模型训练性能瓶颈定位流程案例.pdf

    2025大模型训练性能瓶颈定位流程案例

    蓝桥杯Python竞赛真题详解:涵盖基础与进阶算法挑战

    内容概要:本文档提供了20道蓝桥杯Python竞赛真题及其详细解答,涉及质因数分解、分数计算、特别数求和、数字三角形、约数个数、草的生长模拟、工作时长计算、互质数统计、阶乘和判定、公因数匹配、直线计算、分糖果、矩阵填充、旅行计划优化、阶乘末尾零计数、最长递增子序列、最长公共子序列、最长回文子串、最长公共前缀和最长公共后缀等多个经典算法问题。每个题目都附有完整的代码实现和解释,帮助参赛者深入理解和掌握相关知识点。 适合人群:准备参加蓝桥杯或其他编程竞赛的学生和程序员,尤其是对Python编程有一定基础并希望提高算法能力的人群。 使用场景及目标:①作为赛前复习资料,巩固基础知识;②通过实际编程练习提升算法思维和解决问题的能力;③熟悉竞赛常见题型,增强应对复杂问题的信心。 其他说明:文档不仅提供了解答思路,还包含了具体的代码实现,有助于读者更好地理解和应用所学知识。同时,这些问题覆盖了多种数据结构和算法思想,能够全面锻炼编程技能。

    word-【软考-网络工程师】学习资源

    网络工程师(中级)是软考(计算机技术与软件专业技术资格考试)的一部分,主要考察计算机网络基础、网络安全、网络管理、操作系统、数据库等内容,考试分为上午的基础知识选择题和下午的案例分析题。

Global site tag (gtag.js) - Google Analytics