快速业务通道

pureQuery带注释的方法风格简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
节省开发时间和精力。例如, @GeneratedKey pureQuery bean 注释使 pureQuery 引擎可以用插入或更新操作后生成的数据库值自动更新 bean 参数的字段。

Hook

由于大多数代码都是使用带注释的方法的风格生成的,pureQuery 开发小组中有些人一开始有所顾虑。Bob 解释道, Hook 在执行生成的代码期间为进行特殊处理提供了一种简单的方法。现在不需要手动编写方法调用,以便将每个应用程序调用围绕一个带注释的接口方法,而是采用另一种方法,定义一个 Hook 以注册到带注释的接口。在进入和退出每个带注释的方法时,pureQuery 运行时回调 Hook。这提供了一种回调机制,以便将生成的数据访问代码与特殊的处理关联起来。Hook 定义所需的 pre() 方法,Hook 进行注册后,在进入一个带注释的方法时得到调用。每个 Hook 还将定义一个 post() 方法,当该 Hook 注册后,在从一个带注释的方法返回控制之前,该方法会被立即调用。

Hook 方法为特殊的运行时回调处理提供上下文感知,以防 pre() 和 post() 的用户定义实现需要它。这种感知是通过 pre() 和 post() 方法调用中的参数获得的。可以根据这些参数的值设计不同的特殊处理。例如,取决于调用 Hook 方法的接口方法的名称、提供给那个方法的运行时参数值或者该方法执行的 SQL 语句类型的不同,处理也会有所不同。此外还以 Data 参数的形式提供了 Hook 所注册的 pureQuery 接口的一个句柄。这些值都可以供 Hook 的实现者查看和修改。此外,返回值在被返回给调用者之前,还可以供 post() 方法的实现者使用。下面是 Bob 为了向 Silver Castles 小组进行演示而编写的 Hook 处理代码的一个例子:

pureQuery带注释的方法风格简介(5)

时间:2011-02-14 IBM Heather Lamb

清单 4. 用于特殊处理的 Hook

public static class TrackingHook implements Hook {   public void pre(String methodName, Data objectInstance,            SqlStatementType sqlStatementType, Object... parameters) {     System.out.println(methodName + "**Customer data has been accessed**");   }   public void post(String methodName, Data objectInstance,            Object returnValue, SqlStatementType sqlStatementType,            Object... parameters) {    // do nothing   } }

至此,已经使用 Hook 定义了特殊的处理,开发人员可以通过向进行实例化的接口注册他们的 Hook 的一个实例,以确保可以运行。清单 5 展示如何注册一个 Hook:

清单 5. 注册一个 Hook

... Connection con = ...; // use the DataFactory to instantiate the interface and // provide an instance of Hook to be registered with the instance CustomerData cd = DataFactory.getData(CustomerData.class, con, new TrackingHook()); // execute the SQL for getCustomers() and get the results, // the pre() and post() methods are automatically called Iterator<Customer> cust = cd.getCustomers(); // the application now consumes the Iterator of Customer beans ...

这是有关 Hook 的特殊处理的一个非常简单的例子。请参阅 pureQuery 文档中的 Hook 示例,以查看可以使用 Hook 实现的更复杂的类型示例。

针对多目标的开发

Bob 向他的小组解释了带注释的方法的最后一个特性,使用 XML 配置文件 将 SQL 语句与应用程序的 Java 代码实现完全分离。这样一来,当将 Java 应用程序部署到一个要求不同 SQL 语句的目标数据库时,就可以避免重复编写该 Java 应用程序。例如,如果小组想将同一个应用程序部署到一个遗留数据源上,且该数据源使用稍

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号