关闭

5.IBatis框架的SQL Map配置文件

441人阅读 评论(0) 收藏 举报
    在IBatis SQL Map框架中,需要一个配置文件来声明一些基本信息。该文件类似Hibernate框架的配置文件“hibernate.cfg.xml”,SQL Map初始化期间,会自动在classpath中寻找这个文件,并读取其中的配置信息。

 

配置文件的名称并不重要,可以由程序员来指定,这里假设该配置文件名为sql_map_config.xml。在配置文件中通常会配置如下这些持久层框架信息:

q        数据库连接JDBC

q        SQL Map映射文件的加载。

q        SQL Map的配置和优化设定。

下面看一个sql_map_config.xml示例12.1

12.1sql_map_config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"

         "http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

         <!-- 配置和优化SQL Map解析实例的设定 -->

         <settings cacheModelsEnabled="true"

                       enhancementEnabled="true"

                       lazyLoadingEnabled="true"

                       maxRequests="32"

                       maxSessions="10"

                       maxTransactions="5"

                       useStatementNamespaces="true" />

 

         <!-- 配置连接 -->

         <transactionManager type="JDBC" >

                   <dataSource type="SIMPLE">

                            <property name="JDBC.Driver" value="org.postgresql.Driver"/>

                            <property name="JDBC.ConnectionURL"

                                     value="jdbc:postgresql://192.168.3.53:5432/nrsattacksolution"/>

                            <property name="JDBC.Username" value="sa"/>

                            <property name="JDBC.Password" value="1111"/>

                            <!-- 最大连接数 -->

                            <property name="Pool.MaximumActiveConnections" value="10"/>

                   </dataSource>

         </transactionManager>

 

         <!-- SQL Map映射文件的取得… -->

         <sqlMap resource="fw_attacksolution_SqlMap.xml" />

</sqlMapConfig>

在这个配置文件中,明确表示了SQL Map框架的配置参数,以<sqlMapConfig>作为根结点是必不可少的。随后使用了<settings>元素、<transactionManager>元素和<sqlMap>元素。

<settings>元素中提供了多个属性来配置和优化SQL Map运行时的实例:

q        maxRequests属性指定了同时执行SQL语句最大运行数。

q        maxSessions属性指定了同一时间内活动的最大Session数。所谓Session就是一个请求或一个SQL Map运行时实例自动获得的会话。

q        maxTransactions属性指定了最大事务处理的线程数。

q        cacheModelsEnabled属性指定了SQL Map运行时实例的缓存Model是否开启。

q        lazyLoadingEnabled属性指定了持久化数据是否延迟加载。

q        enhancementEnabled属性指定了全局性的启用或禁用字节码增强,以优化访问POJO变量属性的功能。

q        useStatementNamespaces属性指定了在SQL Map映射文件中是否用全限定名来引用映射声明。

<transactionManager>元素用来配置事务管理。<transactionManager>元素的属性type指定了所使用的事务管理器的类型。该属性值可以是一个别名,也可以是一个类名,本例中所使用的JDBC就是一个别名,它是由IBatis框架所提供。包含在IBatis框架中的事务管理器有三个:除了本例所使用的JDBC(用来管理事务)外,还提供了JTAEXTERNAL两个事务管理器。其中JTA将提供全局的事务管理,EXTERNAL则可以让程序员自行管理事务。

<transactionManager>元素的子元素<dataSource>JDBC数据源设置了一系列参数,这些参数将被用于连接数据库。在SQL Map架构中提供了三种JDBC连接的方式,可以利用type属性来设置这三种方式:

q        SimpleDataSourceFactoryIBatis框架提供的基本连接池的实现,当容器没有提供数据源时可以选择它。SimpleDataSourceFactory的别名已经由IBatis框架所定义,名为“SIMPLE”。本例就是使用SimpleDataSourceFactory作为连接池。

q        DbcpDataSourceFactoryIBatis框架使用DBCP连接池所提供的服务。在Web容器中经常会使用它,在第三章的完整示例中曾经使用它来配置Struts框架部分DAOJDBC连接池。DbcpDataSourceFactory的别名已经由IBatis框架所定义,名为“DBCP”。

q        JndiDataSourceFactoryIBatis框架提供的对JNDI命名服务的支持,它可以在容器中利用JNDI从上下文中找到连接池的实现。在介绍EJB的配置以及Hibernate框架时,曾经将它作为在JBoss服务器中取得连接池的实现,在IBatis框架中是一样的道理。JndiDataSourceFactory的别名已经由IBatis框架所定义,名为“JNDI”。

本例中最后一个元素是<sqlMap>元素,利用属性resource来指定SQL Map映射文件的路径定义。SQL Map映射文件可以从classpath中得到,所以这个路径的定义是以classpath为根目录开始的。本例中没有定义其他路径,说明SQL Map映射文件将被直接放置在classpath路径下。SQL Map映射文件可以有多个。

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40299次
    • 积分:651
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:30篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论