<settings
cacheModelsEnabled="true" //启用SqlMapClient上的缓存机制
classInfoCacheEnabled="true"//保存缓存类,减少类的重用
statementCachingEnabled="true" //iBATIS 2.3.0以后版本中有 ,启动预处理缓存机制
enhancementEnabled="true" //针对POJO启用字节码增强机getter/setter的调用效能
lazyLoadingEnabled="true" //启用延迟加载机制
useStatementNamespaces="true" //使用Statement命名空间
errorTracingEnabled="true"> //启用错误日志,方便开发阶段调试
maxRequests ="256" //最大并发请求数(Statement并发数)
maxSessions ="10" //最大Session数。即当前最大允许的并发SqlMapClient数
maxTransactions ="5" //最大并发事务数
</settings>
classInfoCacheEnabled="true" 当有很多类被ibatis重复使用的时候,会减少创建时间,提高效率
forceMultipleResultSetSupport是否启用多结果集支持,就是多个resultset
errorTracingEnabled是否启用错误日志
defaultStatementTimeout数据库操作的超时时间,并不是连接超时时间,而是statement的执行超时时间
statementCachingEnabled缓存statement,应该是当你再次调用同样的statement语句的时候(比如再次执行同样的查询),将不会重新创建,而是从缓存里读取
以上设置直接采用默认即可,设置上true,基本上都是对ibatis的优化
<?xml version ="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="false" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="true" /> <sqlMap resource="com/test/dao/TEST_USER_SqlMap.xml" /> </sqlMapConfig>
<!-- Settings元素用于优化SqlMapClient实例的各选项,
cacheModelsEnabled属性是否启用SqlMapClient的model的缓存处理,
enhancementEnabled属性,是否运行时增强字节码,
lazyLoadingEnabled属性是否启用所有的延迟加载,调试程序时使用,
maxRequests属性同时执行SQL语句的最大线程数,大于这个值的线程将阻塞直到另一个线程执行结束,不同的DBMS有不同的限定值,减少这个参数值能提高性能,通常是maxTransations数值的10倍,
maxTransations属性,同时进入SqlMapClient.startTransaction()的最大线程数,大于这个线程的数值将被阻塞,直到另一个线程的结束。不同的DBMS有不同的限制,这个参数值
应该小于或等于maxSessions数值 -->
<settings
cacheModelsEnabled="true"
lazyLoadingEnabled="false"
enhancementEnabled="true"
maxSessions="64"
maxTransactions="8"
maxRequests="128"
useStatementNamespaces="false"
classInfoCacheEnabled="true"
errorTracingEnabled="true"
defaultStatementTimeout=""
statementCachingEnabled="true"
/>
<!--
maxRequests
同时执行 SQL 语句的最大线程数。大于这个值的线程将阻塞直到另一个线程执行完成。不同的 DBMS有不同的限制值,但任何数据库都有这些限制。通常这个值应该至少是maxTransactions(参见以下)的 10 倍,并且总是大于 maxSessions 和maxTranactions。减小这个参数值通常能提高性能。
例如: maxRequests=“256”
缺省值:512
maxSessions
同一时间内活动的最大 session 数。一个 session 可以maxSessions是代码请求的显式 session,也可以是当线程使用SqlMapClient 实例(即执行一条语句)自动获得的session。它应该总是大于或等于 maxTransactions 并小于 maxRequests。减小这个参数值通常能减少内存使用。
例如:maxSessions=“64”
缺省值:128
maxTransactions
同时进入 SqlMapClient.startTransaction()的最大线程maxTransactions 数。大于这个值的线程将阻塞直到另一个线程退出。不同的 DBMS 有不同的限制值,但任何数据库都有这些限制。这个参数值应该总是小于或等于maxSessions 并总是远远小于 maxRequests。减小这个参数值通常能提高性能。
例如:maxTransactions=“16”
缺省值:32
cacheModelsEnabled
全局性地启用或禁用 SqlMapClient 的所有缓存cacheModelsEnabled model。调试程序时使用。
例如:cacheModelsEnabled=“true”
缺省值:true(启用)
lazyLoadingEnabled
全局性地启用或禁用SqlMapClient的所有延迟加载。lazyLoadingEnabled 调试程序时使用。
例子:lazyLoadingEnabled=“true”
缺省值:true(启用)
enhancementEnabled
全局性地启用或禁用运行时字节码增强,以优化访enhancementEnabled
问Java Bean属性的性能,同时优化延迟加载的性能。
例子:enhancementEnabled=“true”
缺省值:false(禁用)
useStatementNamespaces
如果启用本属性,必须使用全限定名来引用 mapped useStatementNamespaces
statement。Mapped statement 的全限定名由 sql-map 的名称和 mapped- statement 的名称合成。例如: queryForObject("sqlMapName.statementName");
例如:useStatementNamespaces=“false”
缺省值:false(禁用)
defaultStatementTimeout
此设置值必须为一个整数,作为JDBC连接超时的时间,这个值可以被任意一个映射文件的 statement属性来重新设置,
如果没有指明,查询将无超时时间限制除非在映射文件中设置 statement属性值。被设置的值以秒为单位等待连接失效
classInfoCacheEnabled
With this setting enabled, iBATIS will maintain a cache of introspected
classes. This will lead to a significant reduction in startup time if many
classes are reused.
例如: classInfoCacheEnabled=“true”
缺省值: true (启用)
statementCachingEnabled ( iBATIS 2.3.0以后版本中有)
With this setting enabled, iBATIS will maintain a local cache of
prepared statements. This can lead to significant performance
improvements.
例如: statementCachingEnabled=“true”
缺省值: true (启用)
-->