快速业务通道

跨多个数据源的J2EE开发: 细节探讨 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ot;;    url= "jdbc:odbc:ExcelJDBC";    user[3]= "";    pwd[3]= "";    ... // perform the data source lookups.    ... } // lookup data sources. This is called by the servlet''s "init" method. private void getDS() {    System.out.println("> Jdbc2Oem -- looking up datasources...");    ...    try {      ctx = new InitialContext();      for (int i = 0; i < 3; i++) {      if(ds[i] == null) ds[i] = (DataSource)ctx.lookup(jndiname[i]);      }    ctx.close();    } catch (Exception e) {    System.out.println("Could not look up datasource: " + e);    return;    }    ... } // establish connections private void getConn() {    System.out.println("> Jdbc2Oem -- setting up connections...");    // establish connections to local DB2 Information Integrator,    // remote DB2 UDB, remote Oracle    try {      for (int i = 0; i < 3; i++) {        conn[i] = ds[i].getConnection(user[i], pwd[i]);        conn[i].setAutoCommit(true);      }      // load the Excel driver & establish a connection      Class.forName(driver);      conn[3] = DriverManager.getConnection(url, user[3], pwd[3]);      conn[3].setAutoCommit(true);    } catch (Exception e) {      System.out.println("Error connection: " + e);    return;    } }

跨多个数据源的J2EE开发: 细节探讨(5)

时间:2011-04-11 IBM C. M. Saracco

设计和分解查询

开发检索数据的查询显然是我们工作中最具挑战性的部分。这项任务涉及到确定实现目 标查询的正确语法和语义。(如果您已经忘了它们,请参阅 附录 C。)

当我们通过 DB2 Information Integrator 来访问数据时,很容易就能找到如何正确设 计每个查询的方法。实际上,您会看到我们发出的查询非常象原始的目标查询。

然而,当我们使用直接数据访问来实现这些同样的查询时,事情马上变得复杂起来。我 们必须找到如何正确分解每个查询的方法,以便从每个数据源中检索到正确的数据,同时 保持合理的性能。然后我们必须设计在中间结果上操作的“最终”查询。要使所有的工作 不出差错,说得容易做起来难。当然,这些工作的副作用是,我们需要设计、开发和维护 很多额外的代码。

好奇吗?那么就让我们从使用 DB2 Informcomparetion Integrator 的 servlet 方案 开始比较一下工作量吧。

开发使用 DB2 Information Integrator 来访问数据的查询

使用 DB2 Information Integrator,我们将每个目标查询转换为一个和环境相适应的 SQL 语句。在某些情况下,只需要作很少(如果有的话)的修改。在所有情况下,我们不 必为处理不同的 SQL 方言而担心(即使我们的数据分布在不同的数据源中),而且我们不 必知道数据的物理位置。DB2 Information Integrator 会自动解决这些问题。

查询 1 看上去和我们原始的目标查询非常相似,除了将参数标记转换为一个特定的 VARCHAR 大小。这是一种性能调节机制,我们将在我们系列的下一篇文章中讨论它的使用 。在使用 DB2 Information Integrator 的 servlet 中,我们如下定义第一个查询:

query[1] = "SELECT DISTINCT p_partkey, p_name, p_mfgr, p_type " +        "FROM fed_part " +        "WHERE p_type LIKE CAST(? AS VARCHAR(25)) "

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号