WEB开发网
开发学院软件开发Java iBATIS 3 内的新特性:将 iBATIS 用作应用程序内的... 阅读

iBATIS 3 内的新特性:将 iBATIS 用作应用程序内的一种持久框架

 2010-04-07 00:00:00 来源:WEB开发网   
核心提示: 如果您使用 Java 注释方法来定义对象和数据库之间的映射,那么您将无需这个配置文件,iBATIS 3 内的新特性:将 iBATIS 用作应用程序内的一种持久框架(5),因为 iBATIS 3 提供了一个 Java 应用程序编程接口(API),让您可以以编程方式完成此配置,在这个新的 Java

如果您使用 Java 注释方法来定义对象和数据库之间的映射,那么您将无需这个配置文件,因为 iBATIS 3 提供了一个 Java 应用程序编程接口(API),让您可以以编程方式完成此配置。

使用 iBATIS 的好处

使用 iBATIS 的一个好处是 XML 配置让它得以成为一个很好的可用来将对象映射到现有关系数据库的 ORM 框架。有了 Mapper 类以及映射文件,重点就变成了将对象映射到现有的数据结构,而不是使一个数据结构遵从这个对象的结构。虽然配置成本要比使用一个使开发人员更独立于数据结构的框架多了一些,但是单独设计数据库和对象模型的确有其自身的优势。优秀的关系数据库人员和对象模型设计者可能具有相互竞争的目标,从而使得其各自的实现也具有很大的差异。

过去,我也曾在项目中大量使用过 iBATIS,这些项目中的数据库使用的是关系结构和存储过程,并且开发人员对数据库的设计也没有多少控制。

创建示例 Java 项目

要测试本文中的这些例子,需要创建一个空的 Java 项目。在这个新的 Java 项目内,创建一个包括了 main() 方法的类,如清单 6 所示。

清单 6. Main 类

package com.ibm.developerWorks.examples.ibatis; 
 
import java.io.IOException; 
 
import javax.sql.DataSource; 
 
import org.apache.commons.cli.CommandLine; 
import org.apache.commons.cli.GnuParser; 
import org.apache.commons.cli.OptionBuilder; 
import org.apache.commons.cli.Options; 
import org.apache.derby.jdbc.EmbeddedDataSource; 
import org.apache.ibatis.mapping.Environment; 
import org.apache.ibatis.session.Configuration; 
import org.apache.ibatis.session.SqlSession; 
import org.apache.ibatis.session.SqlSessionFactory; 
import org.apache.ibatis.session.SqlSessionFactoryBuilder; 
import org.apache.ibatis.transaction.TransactionFactory; 
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; 
 
import com.ibm.developerWorks.examples.ibatis.data.AutomobileMapper; 
import com.ibm.developerWorks.examples.ibatis.model.Automobile; 
 
public class Main { 
 
  private static final String CREATE = "create"; 
  private static final String DELETE = "delete"; 
  private static final String IBATIS_CONFIG = "ibatis-config.xml"; 
  private static final String SHOW = "show"; 
 
  @SuppressWarnings("static-access") 
  private static Options createOptions() { 
    Options options = new Options(); 
    options.addOption(CREATE, false, "creates the objects in the database"); 
    options.addOption(OptionBuilder.withArgName(SHOW).hasArg().withDescription( 
        "shows the specified automobile").withLongOpt(SHOW).create()); 
    options.addOption(DELETE, false, "deletes all of the objects in database"); 
    return options; 
  } 
 
  private static SqlSessionFactory createSqlMapper() throws IOException { 
    Reader reader = Resources.getResourceAsReader(IBATIS_CONFIG); 
    return new SqlSessionFactoryBuilder().build(reader); 
  } 
 
  public static void main(final String[] args) { 
    Options options = createOptions(); 
    try { 
      CommandLine cmd = new GnuParser().parse(options, args); 
 
      SqlSession session = createSqlMapper().openSession(); 
       
      try { 
        if (cmd.hasOption(CREATE)) { 
          System.out.println("Creating the objects in the database..."); 
          // Create the automobiles 
          session.insert(Automobile.class.getName() + ".insert", new 
            Automobile(1, "Toyota", "Tercel", 1993)); 
          session.insert(Automobile.class.getName() + ".insert", new 
            Automobile(2, "Honda", "CR-V", 2000)); 
          session.insert(Automobile.class.getName() + ".insert", new 
            Automobile(3, "Chevrolet", "Impala", 1964)); 
          session.insert(Automobile.class.getName() + ".insert", new 
            Automobile(4, "Dodge", "Pickup", 1946)); 
 
          session.commit(); 
 
        } else if (cmd.hasOption(SHOW)) { 
 
          Automobile auto = (Automobile) session.selectOne( 
            Automobile.class.getName() + ".select", cmd.getOptionValue(SHOW)); 
           
          if (auto == null) { 
            System.out.println("No matching results found!"); 
          } else { 
            System.out.println(auto); 
          } 
 
        } else if (cmd.hasOption(DELETE)) { 
 
          session.delete(Automobile.class.getName() + ".deleteAll"); 
          session.commit(); 
 
        } else { 
          System.out.println("Doing nothing."); 
        } 
 
      } finally { 
        session.close(); 
      } 
 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
 
} 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:iBATIS 特性 iBATIS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接