集成 Spring Framework 和 Data Studio (三)

使用 pureQuery 和 Spring Framework

这一节首先展示如何使用 pureQuery 自动生成在前面小节中需要手动创建的代码,然后介绍如何将 Spring 支持添加到 pureQuery 应用程序。最后,将演示一个独特的 pureQuery 特性:静态绑定。

 

 

创建一个 pureQuery 应用程序

创建一个连接 DB2 示例数据库的数据库连接

启动 IBM Data Studio 之后,需要创建一个连接示例数据库的连接。

  1. 将 Database Explorer 视图添加到 Java 透视图。
    导航到 Window > Show View > Other >Data,然后选择 Database Explorer
  2. 创建一个连接到示例数据库的连接
    展开 Database Explorer 内部的 Connections 节点,如果能够看到示例数据库, 就可以进入下一步。否则,右键单击 Database Explorer 内部的 Connections 节点并选择 New Connections . . .
  3. 提供所需的信息,完成 New Connection 向导。

    图 6 展示了 New Connection 对话框。

 

创建一个带有 pureQuery 支持的 Java 项目

  1. 从菜单栏导航到 File > New > Project,然后选择 Java Project。输入 PQSpring 作为项目名称。跟前面一样,除非特别指定,否则一律使用默认值。单击 Finish 完成新项目的创建。
  2. 右键单击刚才创建的项目并选择 Add pureQuery Support . . . 。选择刚才创建的连接 --- Sample --- 作为现有的连接,然后单击 Finish 完成这个过程。

创建 pureQuery 代码

  1. 展开 Database Explorer 内部的示例数据库,查找 ATC 表,如图 7 所示。

  2. 右键单击 ACT table 并选择 Generate pureQuery Code …。在 Package 字段,输入 com.test,然后在 Name 字段输入 Account。选中 Generate annotated-method interface for tableGenerate test class for annotated-method interface for tableInclude connection information in test 复选框,如图 8 所示。



  3. 单击 Next 移动到 Bean Fields 对话框,然后选择 Next 再次导航到 SQL Statements 对话框。在这里,只需生成可以从 ACT 表选择所有行的方法,因此选择 Generate the SQL statements specified below 单选按钮,然后选择 Select all rows 复选框,如图 9 所示。



  4. 单击 Finish 完成代码生成。现在,已经完成 pureQuery 应用程序,而且不需要编写任何代码。

 

生成的代码

下面的文件由以上的步骤自动地生成

  • Account.java —— 保存来自 ACT 表的数据的 bean 类。
  • AccountData.java —— 仅声明方法 getAccounts() 的接口。
  • AccountDataTest.java —— 调用 getAccount() 方法的应用程序。
  • AccountDataImpl.java —— 在 pureQuerysrc 文件夹下的 DAO 实现。这个文件实现在 AccountData 接口中定义的方法,并且由 pureQuery 生成器在每次更改接口时自动生成(如果开启 Project Menu 上的 “Build Automatically”)。

运行应用程序

自动生成的应用程序 AccountDataTest.java 需要一个数据库密码作为输入参数。因此,最好创建一个配置来运行这个应用程序,如图 10 所示。

  1. 右键单击 AccountDataTest.java > Run As > Run …
  2. 右键单击 Java Application > New
  3. 切换到 Arguments 选项卡并输入密码作为 Program 参数。现在,需要在 “YourPasswordHere” 字段为数据库输入您的个人专用密码。
  4. 应用并运行这个配置。ACT 表中的记录将显示在 Console 选项卡里面。



将 Spring 支持添加到 pureQuery 应用程序

pureQuery 和 Spring 集成工具箱简介

这个集成工具箱已经通过 Key MOD-415 提交到 Spring Module with Key MOD-415。就像工具箱本身所描述的一样:“这个特性需求的目标是能够将 pureQuery 和 Spring 结合使用,从而获得 Spring 的 Data 访问特性的优势,比如 Spring 事务管理、资源管理(连接)以及 Data Access Exception 层次结构”。

它包含 3 个文件:

  • pureQuerySpring-samples.zip:带有文档的示例文件。
  • pureQuerySpring_src.zip:源代码文件。
  • spring-pdq.jar:运行时文件。

将 Spring 支持添加到项目

  1. 根据“构建并运行应用程序”小节中的步骤,将 Spring 库添加到 PQSpring 项目。
    1. 右键单击 PQSpring 项目并选择 Build Path>Configure Build Path . . .
    2. 单击 Libraries tab 并选择 Add External Jars,添加下面的 Spring 库。
      • %Spring install%/dist/spring.jar
      • %Spring install%/lib/jakarta-commons/commons-logging.jar
      • %Spring install%/lib/jakarta-commons/commons-dbcp.jar
      • %Spring install%/lib/jakarta-commons/commons-pool.jar
  2. 来自 pureQuery 和 Spring 集成工具箱的一个额外的库“spring-pdq.jar”也需要添加到构建路径。最后的项目应该类似于图 11。



Spring 配置文件

如 前面小节 所述,spring 配置文件 applicationContext.xml 和 jdbc.properties 需要添加到这个项目。在这种情况下,如果您使用相同的连接信息,则 jdbc.properties 就保持不变。需要更改 applicationContext.xml 中的 DAO 定义,表明这是新的 DAO 实现。同样,用一个 propertyConfigurer bean 来表明属性文件的位置。这样做的好处是 DBA 只需要更改属性文件以连接到其他数据源,而不需要更改应用程序本身。

清单 10 是 Spring 配置文件的一个示例,它使用了来自 pureQuery 和 Spring 集成工具箱的类。


清单 10. applicationContext.xml

                    
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" 
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
<!-- replaces ${...} placeholders with values from properties files -->
  <bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>jdbc.properties</value>
      </list>
    </property>
  </bean>

  <!-- Define datasource -->
  <bean id="DB2DataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
    <property name="driverClassName"
      value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
  </bean>

<!-- Configure DAO -->
<bean id="ACT_DATA" class="java.lang.Class" 
factory-method="forName">
    <constructor-arg value="com.test.AccountData" />
  </bean>

  <bean id="ACT_DAO"
    class="org.springmodules.purequery.PdqAnnotatedMethodFactory"
    factory-method="getData">
    <constructor-arg ref="ACT_DATA" />
    <constructor-arg ref="DB2DataSource" />
  </bean>

</beans> 

 

 

应用程序

接下来将创建一个新的应用程序 SpringTest.java,并通过它加载 Spring 配置文件和调用 DAO 方法。将清单 11 中的代码添加到 com.test 包下的项目。


清单 11:SpringTest.java

 

                    
package com.test;
import java.util.Iterator;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
  public static void main(String[] args) {
    //Load the configuratioin file
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(
new   String[] {"applicationContext.xml"});		
    //Get the DAO object
    AccountData accountData = (AccountData)ac.getBean("ACT_DAO");
    //Call the getAccounts() method
    Iterator<Account> Acts = accountData.getAccounts();  
    //Print out the results
    while (Acts.hasNext ()) {
      Account o = Acts.next();
      System.out.println("Act No=" + o.getActno() + " key="+o.getActkwd() + " desc="+
       o.getActdesc()    );
    }
  }
}

 

你可能感兴趣的:(DAO,spring,bean,jdbc,项目管理)