org.alfresco.ibatis
Class HierarchicalSqlSessionFactoryBean

java.lang.Object
  extended by org.mybatis.spring.SqlSessionFactoryBean
      extended by org.alfresco.ibatis.HierarchicalSqlSessionFactoryBean
All Implemented Interfaces:
java.util.EventListener, org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationListener

public class HierarchicalSqlSessionFactoryBean
extends org.mybatis.spring.SqlSessionFactoryBean

Extends the MyBatis-Spring support by allowing a choice of ResourceLoader. The ResourceLoader will be used to load the SqlMapConfig file and use a HierarchicalXMLConfigBuilder to read the individual MyBatis (3.x) resources. Pending a better way to extend/override, much of the implementation is a direct copy of the MyBatis-Spring SqlSessionFactoryBean; some of the protected methods do not have access to the object's state and can therefore not be overridden successfully. This is equivalent to HierarchicalSqlMapClientFactoryBean which extended iBatis (2.x). See also: IBATIS-589 and:

Since:
4.0

Constructor Summary
HierarchicalSqlSessionFactoryBean()
          Default constructor
 
Method Summary
 void afterPropertiesSet()
           
protected  org.apache.ibatis.session.SqlSessionFactory buildSqlSessionFactory()
          Build a SqlSessionFactory instance.
 org.apache.ibatis.session.SqlSessionFactory getObject()
          
 java.lang.Class getObjectType()
          
 void setConfigLocation(org.springframework.core.io.Resource configLocation)
          Set the location of the MyBatis SqlSessionFactory config file.
 void setConfigurationProperties(java.util.Properties sqlSessionFactoryProperties)
          Set optional properties to be passed into the SqlSession configuration, as alternative to a <properties> tag in the configuration xml file.
 void setDataSource(javax.sql.DataSource dataSource)
          Set the JDBC DataSource that this instance should manage transactions for.
 void setEnvironment(java.lang.String environment)
          NOTE: This class overrides any Environment you have set in the MyBatis config file.
 void setMapperLocations(org.springframework.core.io.Resource[] mapperLocations)
          Set locations of MyBatis mapper files that are going to be merged into the SqlSessionFactory configuration at runtime.
 void setResourceLoader(HierarchicalResourceLoader resourceLoader)
          Set the resource loader to use.
 void setSqlSessionFactoryBuilder(org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder)
          Sets the SqlSessionFactoryBuilder to use when creating the SqlSessionFactory.
 void setTransactionFactory(org.apache.ibatis.transaction.TransactionFactory transactionFactory)
          Set the MyBatis TransactionFactory to use.
 
Methods inherited from class org.mybatis.spring.SqlSessionFactoryBean
isSingleton, onApplicationEvent, setFailFast, setPlugins, setTypeAliases, setTypeAliasesPackage, setTypeHandlers, setTypeHandlersPackage
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HierarchicalSqlSessionFactoryBean

public HierarchicalSqlSessionFactoryBean()
Default constructor

Method Detail

setResourceLoader

public void setResourceLoader(HierarchicalResourceLoader resourceLoader)
Set the resource loader to use. To use the #resource.dialect# placeholder, use the HierarchicalResourceLoader.

Parameters:
resourceLoader - the resource loader to use

afterPropertiesSet

public void afterPropertiesSet()
                        throws java.lang.Exception
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
Overrides:
afterPropertiesSet in class org.mybatis.spring.SqlSessionFactoryBean
Throws:
java.lang.Exception

setConfigLocation

public void setConfigLocation(org.springframework.core.io.Resource configLocation)
Set the location of the MyBatis SqlSessionFactory config file. A typical value is "WEB-INF/mybatis-configuration.xml".

Overrides:
setConfigLocation in class org.mybatis.spring.SqlSessionFactoryBean

setMapperLocations

public void setMapperLocations(org.springframework.core.io.Resource[] mapperLocations)
Set locations of MyBatis mapper files that are going to be merged into the SqlSessionFactory configuration at runtime. This is an alternative to specifying "<sqlmapper>" entries in an MyBatis config file. This property being based on Spring's resource abstraction also allows for specifying resource patterns here: e.g. "classpath*:sqlmap/*-mapper.xml".

Overrides:
setMapperLocations in class org.mybatis.spring.SqlSessionFactoryBean

setConfigurationProperties

public void setConfigurationProperties(java.util.Properties sqlSessionFactoryProperties)
Set optional properties to be passed into the SqlSession configuration, as alternative to a &lt;properties&gt; tag in the configuration xml file. This will be used to resolve placeholders in the config file.

Overrides:
setConfigurationProperties in class org.mybatis.spring.SqlSessionFactoryBean

setDataSource

public void setDataSource(javax.sql.DataSource dataSource)
Set the JDBC DataSource that this instance should manage transactions for. The DataSource should match the one used by the SqlSessionFactory: for example, you could specify the same JNDI DataSource for both. A transactional JDBC Connection for this DataSource will be provided to application code accessing this DataSource directly via DataSourceUtils or DataSourceTransactionManager. The DataSource specified here should be the target DataSource to manage transactions for, not a TransactionAwareDataSourceProxy. Only data access code may work with TransactionAwareDataSourceProxy, while the transaction manager needs to work on the underlying target DataSource. If there's nevertheless a TransactionAwareDataSourceProxy passed in, it will be unwrapped to extract its target DataSource.

Overrides:
setDataSource in class org.mybatis.spring.SqlSessionFactoryBean

setSqlSessionFactoryBuilder

public void setSqlSessionFactoryBuilder(org.apache.ibatis.session.SqlSessionFactoryBuilder sqlSessionFactoryBuilder)
Sets the SqlSessionFactoryBuilder to use when creating the SqlSessionFactory. This is mainly meant for testing so that mock SqlSessionFactory classes can be injected. By default, SqlSessionFactoryBuilder creates DefaultSqlSessionFactory instances.

Overrides:
setSqlSessionFactoryBuilder in class org.mybatis.spring.SqlSessionFactoryBean

setTransactionFactory

public void setTransactionFactory(org.apache.ibatis.transaction.TransactionFactory transactionFactory)
Set the MyBatis TransactionFactory to use. Default is SpringManagedTransactionFactory The default SpringManagedTransactionFactory should be appropriate for all cases: be it Spring transaction management, EJB CMT or plain JTA. If there is no active transaction, SqlSession operations will execute SQL statements non-transactionally. It is strongly recommended to use the default TransactionFactory. If not used, any attempt at getting an SqlSession through Spring's MyBatis framework will throw an exception if a transaction is active.

Overrides:
setTransactionFactory in class org.mybatis.spring.SqlSessionFactoryBean
Parameters:
transactionFactory - the MyBatis TransactionFactory
See Also:
SpringManagedTransactionFactory

setEnvironment

public void setEnvironment(java.lang.String environment)
NOTE: This class overrides any Environment you have set in the MyBatis config file. This is used only as a placeholder name. The default value is SqlSessionFactoryBean.class.getSimpleName().

Overrides:
setEnvironment in class org.mybatis.spring.SqlSessionFactoryBean
Parameters:
environment - the environment name

buildSqlSessionFactory

protected org.apache.ibatis.session.SqlSessionFactory buildSqlSessionFactory()
                                                                      throws java.io.IOException
Build a SqlSessionFactory instance. The default implementation uses the standard MyBatis XMLConfigBuilder API to build a SqlSessionFactory instance based on an Reader.

Overrides:
buildSqlSessionFactory in class org.mybatis.spring.SqlSessionFactoryBean
Returns:
SqlSessionFactory
Throws:
java.io.IOException - if loading the config file failed

getObject

public org.apache.ibatis.session.SqlSessionFactory getObject()
                                                      throws java.lang.Exception

Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean
Overrides:
getObject in class org.mybatis.spring.SqlSessionFactoryBean
Throws:
java.lang.Exception

getObjectType

public java.lang.Class getObjectType()

Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean
Overrides:
getObjectType in class org.mybatis.spring.SqlSessionFactoryBean


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.