6: jdbc default auto commit no driver dependent the default autocommit setting for all connections created by the pool 25: is property available checks if a property is available i e is a property of the parameter bean 29: is empty checks to see if the value of a collection string or string value of property is null or empty or size 1 31: is parameter present checks to see if the parameter object is present not null 32: is not parameter present checks to see if the parameter object is not present null example usage is not parameter present prepend and employee type default is not parameter present 43: iterate attributes prepend the overridable sql part that will be prepended to the statement optional 48: reusing sql fragments when writing sql maps you often encounter duplicate fragments of sql for example a from clause or constraint statement ibatis offers a simple yet powerful tag to reuse them for the sake of simplicity let s assume we want to get some items and we want to do a count on them normally you would write something like this select id select item count result class int select count as total from items where parentid 6 select select id select items result class item select id name from items where parentid 6 select to eliminate this duplication we use the tags sql and include the sql tag contains the fragment to reuse the include tag includes such a fragment in a statement for example sql id select item fragment from items where parentid 6 sql select id select item count result class int select count as total include refid select item fragment select select id select items result class item select id name include refid select item fragment select the include tag is namespace aware so you can refer to fragments even when they are located in another map however due to the way ibatis loads the sql maps the included fragment should be loaded before the including statement the fragments are included and processed on query execution so parameters can be used too sql id select item fragment from items where parentid value sql select id select item count parameter class int result class int select count as total include refid select item fragment select select id select items parameter class int result class item select id name include refid select item fragment select 52: soft this reference type will reduce the likelihood of running out of memory in case the results are not currently in use and the memory is needed for other objects however this is not the most aggressive reference type in that regard and memory still might be allocated and made unavailable for more important objects 57: serializable read write caches as you may agree caching per session as described above may offer little benefit to global application performance another type of read write cache that can offer a performance benefit to the entire application i e not just per session is a serializable read write cache this cache will return different instances copies of the cached object to each session therefore each session can safely modify the instance returned realize the difference in semantics here usually you would expect the same instance to be returned from a cache but in this case you ll get a different one also note that every object stored by a serializable cache must be serializable this means that you will have difficulty using both lazy loading features combined with a serializable cache because lazy proxies are not serializable the best way to figure out what combination of caching lazy loading and table joining is simply to try it out to use a serializable cache set read only false and serialize true by default cache models are read only and non serializable read only caches will not be serialized there s no benefit 59: automatic transactions although using explicit transactions is very highly recommended there is a simplified semantic that can be used for simple requirements generally read only if you do not explicitly demarcate transactions using the start transaction commit transaction and end transaction methods they will all be called automatically for you whenever you execute a statement outside of a transactional block as demonstrated in the above for example private reader reader new resources get resource as reader com ibatis example sql map config xml private sql map client sql map sql map client builder build sql map reader public update item description string item id string new description throws sql exception try item item item sql map query for object get item item id item set description tx1 no transaction demarcated so transaction will be automatic implied sql map update update item item item set description new description item set description tx2 no transaction demarcated so transaction will be automatic implied sql map update update item item catch sql exception e throw sql exception e fill in stack trace note be very careful using automatic transactions for although they can be attractive you will run into trouble if your unit of work requires more than a single update to the database in the above example if the second call to update item fails the item description will still be updated with the first new description of tx1 i e this is not transactional behavior 67: jta this transaction manager uses a jta global transaction such that the sql map activities can be included as part of a wider scope transaction that possibly involves other databases or transactional resources this configuration requires a user transaction property set to locate the user transaction from a jndi resource see the jndi datasource example below for an example of this configuration 69: external this allows you to manage transactions on your own you can still configure a data source but transactions will not be committed or rolled back as part of the framework lifecycle this means that some part of your application external to data mapper must manage the transactions this setting is also useful for non transactional databases e g read only 72: configuration configuring an sql map is trivial once you have created your sql map xml definition files and sql map configuration file discussed above sql map client instances are built using sql map client builder this class has one primary static method named build sql map the build sql map method simply takes a reader instance that can read in the contents of an sql map config xml not necessarily named that string resource com ibatis example sql map config xml reader reader resources get resource as reader resource sql map client sql map sql map client builder build sql map reader