ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转载]DB2 UDB、WebSphere 和 iBATIS

[转载]DB2 UDB、WebSphere 和 iBATIS

原创 Linux操作系统 作者:dinner1007 时间:2019-06-18 15:12:07 0 删除 编辑
DB2 UDB、WebSphere 和 iBATIS
学习如何在 Java™ 应用程序和 J2EE™ 应用程序中使用 iBATIS。本文将介绍 iBATIS 语法,访问数据源,设立支持 iBATIS 的 WebSphere® Studio 项目,并使用 iBATIS 查询 DB2® Universal Database™ Version 8.1 (DB2)。

iBATIS 概述

iBATIS 是一个开源的对象-关系(object-to-relational)映射数据层,已经在 Java 和 J2EE 领域获得普及。iBATIS 有两个变体:SQL Maps 和 Data Access Objects(DAO),这两个变体是完全独立的。文章后面部分将对它们进行说明。本文的重点是 SQL Maps。因为没有太多关于如何开始使用 iBATIS 、WebSphere 或 DB2 的可用文档,所以本文应该对填补这个空缺有所帮助。

iBATIS SQL Maps

SQL Maps 框架有助于极大地减少访问关系数据库通常所需的 Java 代码量。SQL Maps 使用 XML 描述符将 JavaBeans 映射到 SQL 语言。简单性是 SQL Maps 优于其他框架和对象关系映射工具的最大优点。要使用 SQL Maps,只需熟悉 JavaBeans、XML 和 SQL 即可。联合表或执行复杂查询都不需要任何复杂方案。有了 SQL Maps,SQL 的真实力量也就尽在您的掌握之中。

SQL Map API 可以使编程人员轻松地将 JavaBeans 对象映射到 PreparedStatement 参数和 ResultSets。SQL Maps 背后的基本原理非常简单:提供一个只使用 20% 的代码就能提供 80% 的 JDBC 功能的简单框架。

SQL Maps 框架使用 XML 描述符来映射 JavaBeans、Map 实现、原始包装器类型(String,Integer) 等,甚至将 XML 文档映射到 SQL 语句。以下是一个生命周期的高级描述:

  1. 提供一个对象作为参数(这个对象是 JavaBean、Map,或者是原始包装器)。这个参数对象将用于设置 UPDATE 语句中的输入值,或者用于设置某一查询中的 WHERE 子句的值(等等)。
  2. 执行映射的语句。这一步骤中会出现一些不可思议的事。SQL Maps 框架将创建一个 PreparedStatement 实例,使用所提供的参数对象设置所有参数、执行语句以及从 ResultSet 中构建一个结果对象。
  3. 在执行更新的情况下,返回受影响的行。在执行查询的情况下,返回单个对象或一个对象集。与参数类似,结果对象可以是 JavaBean、Map、原始类型包装器或 XML。

iBATIS Data Access Objects

iBATIS

iBATIS Web site

在开发健壮的 Java 应用程序时,用逗号分隔持久性实现的详细说明通常是一个好主意。Data Access Objects(DAO)允许您创建简单的组件,提供对数据的访问,而无需将实现的详细说明展示给应用程序的其余部分。使用 DAO 可以动态地配置应用程序,从而使用不同的持久性机制。如果您有一个涉及许多不同的数据库和持久性方法的复杂程序,那么 DAO 可以帮助您创建一个用于您将使用的其他应用程序的持久性 API。

通过允许将动态的、可插入的 DAO 组件很容易地换入换出,可以使用 iBATIS Data Access Objects API 帮助隐藏持久性层实现的细节,不让其他应用程序知道。例如,您可以使用两个特殊的 DAO,一个使用 iBATIS SQL Maps 框架将对象持久存储到数据库中,另一个则使用 Hibernate 框架。类似的一个例子将是一个为另一个 DAO 提供缓存服务的 DAO。根据使用情况(例如,有限的数据库性能与有限的内存相对),您可以插入这个缓存 DAO,或者可以使用标准的非缓存 DAO。这些例子展示了 DAO 模式提供的一些便利;然而,DAO 提供的安全性更为重要。DAO 模式可以保护应用程序,使之不必与特定持久性方法捆绑在一起。在当前解决方案不适合(甚至不可用)的情况下,可以创建新的 DAO 实现来支持新的解决方案,而不必修改其他应用层中的任何代码。




回页首


在 Java 应用程序中使用 iBATIS

在为本文下载的源代码中,有一个使用 iBATIS 的完全配置好了的 Java 应用程序。该项目名为 TestIbatis

您必须做的第一件事将是配置 iBATIS,以便连接到使用 DB2 JDBC 驱动程序的 DB2。这涉及到配置两个 iBATIS 配置文件:sql-map-config.xmldatabase.properties。这两个配置文件都必须在运行时放置在 Java 应用程序的类路径中。

设置所需的 JAR 文件

以下是 .classpath 文件,它展示了支持 .classpath 的 Java 应用程序所需的库:


清单 1. .classpath 文件


    
    
    
    
    
    
    
    
    
    
    
    
    

]]>

设置 sql-map-config.xml

sql-map-config.xml 是 iBATIS 的主配置文件。它定义了 JDBC 驱动程序参数和 SQL 映射文件,以便将 Java 对象绑定到数据库模式。


清单 2. sql-map-config.xml



	
  
  
    
      
      
      
      
      
      
      
    
  
  
  
  

]]>

设置 database.properties

配置文件 database.properties 定义了将使用的 JDBC 驱动程序类、将使用的用户名和密码,以及将使用的 JDBC URL。要注意的是,我们将连接到 DB2 SAMPLE 数据库。


清单 3. sql-map-config.xml


设置 Employee.xml

对于每个将使用 iBATIS 持久存储的 Java 对象,必须配置一个 XML 映射文件。我选择将 DB2 SAMPLE 数据库中的 EMPLOYEE 表映射到称为 Employee 的 Java 对象。


清单 4. Employee.xml



	
		
		
		
	
	
	

]]>

设置 Employee.java

要认识到 iBATIS 期望 Java 类与典型的 Java Bean 模式(带有 setters 和 getters 的属性)趋于一致。


清单 5. Employee.java
Preferences>Java>Code Generation>Code and Comments
 */
package com.orc.ibatis;
/**
 * @author Owen Cline
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class Employee {
	private String empno;
	private String firstname;
	private String lastname;
	
	public void setEmpno(String empNo)
	{
		this.empno = empNo;
	}
	
	public void setFirstname(String firstName)
	{
		this.firstname = firstName;
	}
	
	public void setLastname(String lastName)
	{
		this.lastname = lastName;
	}
	public String getEmpno()
	{
		return this.empno;
	}
	
	public String getFirstname()
	{
		return this.firstname;
	}
	
	public String getLastname()
	{
		return this.lastname;
	}
}
]]>

设置 log4j.properties

iBATIS 支持基于 log4j 的大量日志工具(logging facility)。下面展示了可以如何配置 Java 应用程序,将这些配置记录到称为 testibatis.log 的文件中。


清单 6. log4j.properties





回页首


在 J2EE 应用程序中使用 iBATIS

iBATIS 支持使用 JNDI 数据源并且可以映射到 WebSphere 的 JTA 服务。为了展示这一点,我们将创建一个数据库会话 bean,使用 iBATIS SQL Maps 访问 DB2 SAMPLE 数据库。

我们将使用 Employee.javaEmployee.xml 文件,这两个文件与 Java 应用程序示例中所用的文件相同。因为我们使用了一个 JNDI 数据源,所以不再需要 database.properties 文件。为了使用 JNDI 数据源和 WebSphere 的 JTA 服务,sql-map-config.xml 文件将有所改动。

所以,您应该设置一个 JAAS 身份验证条目和一个 JNDI 数据源,并将 iBATIS 配置文件的位置添加到 Test Server 的 JVM 类路径中,您将在该服务器上运行 EJB 项目。

设置 JAAS Authentication 条目

在 Server Perspective of Application Developer 中编辑 TestServer 配置,并导航到 Security 选项卡。添加一个下一次创建数据源时将用到的 JAAS Authentication 条目。


图 1. 添加一个 JAAS Authentication 条目
iBATIS

设置 JNDI 数据源

现在要添加一个 DB2 数据源,并使用刚才添加的 JAAS Authentication 条目。在 Server Perspective of Application Developer 中编辑 TestServer 配置,并导航到 Data source 选项卡。


图 2. 添加一个 JNDI 数据源条目
iBATIS

设置 JVM 类路径

在运行 EJB Project 时,必须查找 sql-map-config.xmlEmployee.xml 文件。您应该将它们添加到一个目录中,并将该目录添加到 JVM 类路径中。在 Server Perspective of Application Developer 中编辑 TestServer 配置,并导航到 Environment 选项卡。


图 3. 修改 JVM 类路径
iBATIS

设置对数据源的 Resource Reference

现在,必须将一个 Resource Reference 添加到 EJB Project 中的 Session Bean 来映射到数据源。在 Application Developer 中,转至 J2EE Perspective,并编辑包含 Session Bean 项目的 EJB Deployment Descriptor。然后转至 References 选项卡,并将一个 Resource Reference 添加到 Session Bean。


图 4. EJB Deployment Descriptor 中的数据源的 Resource Reference
iBATIS

清单 7. 包含已添加的 Resource Reference 的 ejb-jar.xml



	IbatisEJB
	
		
			IbatisSession
			com.orc.ibatis.IbatisSessionLocalHome
			com.orc.ibatis.IbatisSessionLocal
			com.orc.ibatis.IbatisSessionBean
			Stateless
			Container
			
				
				SampleDB
				javax.sql.DataSource
				Container
				Shareable
			
		
	

]]>

设置 sql-map-config.xml

以下展示了如何将 iBATIS 映射到 DB2 JNDI 数据源,以及如何映射到 WebSphere 的 JTA 服务:


清单 8. sql-map-config.xml



	
	
		
		
			
		
	
	

]]>




回页首


结束语

iBATIS 是为 Java 或 J2EE 应用程序提供持久存储层的简易框架。通过掌握本文介绍的知识,您应该能够将 iBATIS 集成到 DB2 UDB 和 WebSphere 的 JTA 服务中。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130370/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-08-23

  • 博文量
    1714
  • 访问量
    1290399