1、 xsi:schemaLocation=/www.springframework.org/schema/beans http:/www.springframework.org/schema/beans/spring-beans-3.0.xsd/www.springframework.org/schema/aop /www.springframework.org/schema/aop/spring-aop-3.0.xsd/www.springframework.org/schema/tx /www.springframework.org/schema/tx/spring-tx-3.0.xsd/w
2、ww.springframework.org/schema/context /www.springframework.org/schema/context/spring-context-3.0.xsd context:annotation-config /- 定义使用C3P0连接池的数据源 -bean id=dataSourceA class=com.mchange.v2.c3p0.ComboPooledDataSource destroy-method=close property name=driverClass dm.jdbc.driver.DmDriver/property- 连接数据
3、库所用的URL -jdbcUrljdbc:dm:/192.168.1.250:5236usersysdbapassword222maxPoolSize20minPoolSize2initialPoolSize- 设置数据库连接池的连接的最大空闲时间,单位为秒 -maxIdleTime/bean- 定义使用C3P0连接池的数据源(基础库数据源) -dataSourceB5237dataSourceC5238targetDataSourcesmap key-type=java.lang.String /mapdefaultTargetDataSource ref=- 定义Hibernate的Ses
4、sionFactory -sessionFactory class=org.springframework.orm.hibernate3.LocalSessionFactoryBean- 依赖注入上面定义的数据源dataSource -dataSource /- 注册Hibernate的ORM映射文件 -mappingResourceslistcom/hjzbjcxcyw/po/test/liwh/Book3.hbm.xmlcom/hjzbjcxcyw/po/test/liwh/Book.hbm.xmlcom/hjzbjcxcyw/po/test/liwh/Department.hbm.xml
5、com/hjzbjcxcyw/po/test/liwh/Employee.hbm.xmlcom/hjzbjcxcyw/po/test/liwh/Bookb.hbm.xml- 设置Hibernate的相关属性 -hibernatePropertiespropsprop key=hibernate.cache.user_second_level_cachefalse- 设置Hibernate的数据库方言 -hibernate.dialectorg.hibernate.dialect.DmDialectshow_sqltruehibernate.jdbc.batch_size50-定义Hiberna
6、te的事务管理器HibernateTransactionManager -transactionManagerorg.springframework.orm.hibernate3.HibernateTransactionManager- 依赖注入上面定义的sessionFactory - 定义一个事务通知txAdvice,配置事务的传播特性 -tx:advice id=txAdvice transaction-manager=attributes- 所有以browse、list、load、get及 is开头的业务逻辑方法均不需要事务控制且只读 -method name=browse* prop
7、agation=NOT_SUPPORTED read-only=truelist*load*get*is*- 设置所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -*REQUIRED/tx:advice - 装配HibernateTemplate实例 -hibernateTemplateorg.springframework.orm.hibernate3.HibernateTemplateconstructor-arg ref=- 装配通用数据库访问类BaseDAOImpl -daocom.hjzbjcxcyw.dao.BaseDAOImpl/beansBook3.hbm.xml文件
8、如下:utf-8DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/ENhibernate-mappingclass name=com.hjzbjcxcyw.po.test.liwh.Book3 table=liwh.BOOK3(liwh是模式名,BOOK3是表名)id name=id column= type= length=36generator class=assigned/idbookNamecolumn name=BOOK_NAME50isbnISBN256authorAUTHORtitleTI
9、TLEdatejava.util.DateidsIDS22/class/hibernate-mappingDynamicDataSource.action/动态分配数据源package mon;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingDataSource Override protected Object determineCurrentLookupKey() return D
10、ataSourceContextHolder.getProxType(); DataSourceContextHolder.action/设置数据源public class DataSourceContextHolder public static final String DATA_SOURCE_A = ; public static final String DATA_SOURCE_B = public static final String DATA_SOURCE_C = private static final ThreadLocal contextHolder = new Threa
11、dLocal(); public static void setProxType(String customerType) contextHolder.set(customerType); public static String getProxType() return contextHolder.get(); public static void clearProxType() contextHolder.remove();Tools.action/指定数据源public static void setDataSource(int h) if(h=1) DataSourceContextH
12、older.setProxType(DataSourceContextHolder.DATA_SOURCE_A); else if(h=2) DataSourceContextHolder.setProxType(DataSourceContextHolder.DATA_SOURCE_B); else if(h=3) DataSourceContextHolder.setProxType(DataSourceContextHolder.DATA_SOURCE_C);在service文件的各个方法中指定数据源。public List browseEmployee() Tools.setDataSource(3); List l = dao.listAll(Employee); System.out.println(book size= + l.size(); return l;在acton文件中调用service的browseEmployee()方法。 大功告成,呵呵! 2013-04-01
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1