首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Spring+Hibernate兑现动态SessionFactory切换

2012-12-19 
Spring+Hibernate实现动态SessionFactory切换1.配置多个数据源和SessionFactory,并给相应SessionFactory配

Spring+Hibernate实现动态SessionFactory切换

1.配置多个数据源和SessionFactory,并给相应SessionFactory配置事务管理:

?

?

2. 为SessionFactory配置事务切面

?

?

3. 配置一个动态的SessionFactory:

?

public class DynamicSessionFactory implements SessionFactory ,ApplicationContextAware{private static final long serialVersionUID = 1L;private ApplicationContext applicationContext;private SessionFactory getSessionFactory(String name) {return (SessionFactory) applicationContext.getBean(name);}        //根据当前线程的SessionFactoryName获取SessionFactoryprivate SessionFactory getSessionFactory() {return getSessionFactory(ThreadLocalUtil..getSessionFactoryName());}public Reference getReference() throws NamingException {return getSessionFactory().getReference();}public Session openSession() throws HibernateException {return getSessionFactory().openSession();}public Session openSession(Interceptor interceptor)throws HibernateException {return getSessionFactory().openSession(interceptor);}public Session openSession(Connection connection) {return getSessionFactory().openSession(connection);}public Session openSession(Connection connection, Interceptor interceptor) {return getSessionFactory().openSession(connection,interceptor);}public Session getCurrentSession() throws HibernateException {return getSessionFactory().getCurrentSession();}public StatelessSession openStatelessSession() {return getSessionFactory().openStatelessSession();}public StatelessSession openStatelessSession(Connection connection) {return getSessionFactory().openStatelessSession(connection);}public ClassMetadata getClassMetadata(Class entityClass) {return getSessionFactory().getClassMetadata(entityClass);}public ClassMetadata getClassMetadata(String entityName) {return getSessionFactory().getClassMetadata(entityName);}public CollectionMetadata getCollectionMetadata(String roleName) {return getSessionFactory().getCollectionMetadata(roleName);}public Map getAllClassMetadata() {return getSessionFactory().getAllClassMetadata();}public Map getAllCollectionMetadata() {return getSessionFactory().getAllCollectionMetadata();}public Statistics getStatistics() {return getSessionFactory().getStatistics();}public void close() throws HibernateException {getSessionFactory().close();}public boolean isClosed() {return getSessionFactory().isClosed();}public Cache getCache() {return getSessionFactory().getCache();}public void evict(Class persistentClass) throws HibernateException {getSessionFactory().evict(persistentClass);}public void evict(Class persistentClass, Serializable id)throws HibernateException {getSessionFactory().evict(persistentClass, id);}public void evictEntity(String entityName) throws HibernateException {getSessionFactory().evictEntity(entityName);}public void evictEntity(String entityName, Serializable id)throws HibernateException {getSessionFactory().evictEntity(entityName, id);}public void evictCollection(String roleName) throws HibernateException {getSessionFactory().evictCollection(roleName);}public void evictCollection(String roleName, Serializable id)throws HibernateException {getSessionFactory().evictCollection(roleName, id);}public void evictQueries(String cacheRegion) throws HibernateException {getSessionFactory().evictQueries(cacheRegion);}public void evictQueries() throws HibernateException {getSessionFactory().evictQueries();}public Set getDefinedFilterNames() {return getSessionFactory().getDefinedFilterNames();}public FilterDefinition getFilterDefinition(String filterName)throws HibernateException {return getSessionFactory().getFilterDefinition(filterName);}public boolean containsFetchProfileDefinition(String name) {return getSessionFactory().containsFetchProfileDefinition(name);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext)throws BeansException {this.applicationContext = applicationContext;}}

?

?

?

热点排行