hibernate想跨库查询,在网上看了些资料,说是用spring创建两个sessionFactory,还是有些不太明白,希望高手能给说的明白点,小弟分不够了麻烦了。。
解决方案 »
- 在线等解决方法,myeclipse的自动纠错功能失效。
- 一个int数组用线程进行排序
- cookies登录验证问题
- 有关hibernate在ecplise下生成maping,出现错误 an internal error occurred during :Generating Artifacts
- 在applicationContext.xml中可以指定用类的哪个具体方法吗?
- 所有的异常都继承自Throw able,它的两个分支是什么?
- VJ++安装时遇到的问题
- 再次请教j2ee开发中遇到的一个简单的错误提示(关于hibernate,望各位帮忙看一下)
- windows下用Jbuilder开发的EJB源码移植到linux下有哪些需要修改的地方?
- j2ee 启动报错,请各位给看看》》《
- spring获取applicationContext问题,在线等待.....
- 关于hibernate无法连接到sql数据库的问题 急!!在线等 立马结贴个分
如果楼主比较了解jdbc和hibernate应该不难理解,虽然可能没人告诉我们可以这么用,但自己应该能想到。
LZ可以看看SessionFactory是如何被创建的 这样的话你就明白了我一直都用智能ABC..
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="CRMDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/crm"></property>
</bean>
<bean id="SALEDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/sale"></property>
</bean>
<bean id="CRMSessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="CRMDataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/CRM/ORM/BasDict.hbm.xml</value>
<value>com/CRM/ORM/Credit.hbm.xml</value>
<value>com/CRM/ORM/Satisfy.hbm.xml</value>
<value>com/CRM/ORM/Grade.hbm.xml</value>
<value>com/CRM/ORM/CstService.hbm.xml</value>
<value>com/CRM/ORM/Customer.hbm.xml</value>
<value>com/CRM/ORM/CstLost.hbm.xml</value>
<value>com/CRM/ORM/CstActivity.hbm.xml</value>
<value>com/CRM/ORM/CstLinkman.hbm.xml</value>
<value>com/CRM/ORM/Product.hbm.xml</value>
<value>com/CRM/ORM/Orders.hbm.xml</value>
<value>com/CRM/ORM/OrdersLine.hbm.xml</value>
<value>com/CRM/ORM/SalPlan.hbm.xml</value>
<value>com/CRM/ORM/SalChance.hbm.xml</value>
</list>
</property>
</bean>
<bean id="SALESessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="SALEDataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/CRM/ORM/Storage.hbm.xml</value>
<value>com/CRM/ORM/Product.hbm.xml</value>
<value>com/CRM/ORM/Orders.hbm.xml</value>
<value>com/CRM/ORM/OrdersLine.hbm.xml</value>
</list> </property>
</bean>
<bean id="CRMTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="CRMSessionFactory"></property>
</bean>
<bean id="SALETransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="SALESessionFactory"></property>
</bean>
<tx:advice id="CRMAdvice"
transaction-manager="CRMTransactionManager">
<tx:attributes>
<tx:method name="find*" propagation="REQUIRED"
read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<tx:advice id="SALEAdvice"
transaction-manager="SALETransactionManager">
<tx:attributes>
<tx:method name="find*" propagation="REQUIRED"
read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="daopt"
expression="execution(* com.CRM.dao.CommonDAO.*(..))" />
<aop:advisor advice-ref="CRMAdvice" pointcut-ref="daopt" />
</aop:config>
<aop:config>
<aop:advisor advice-ref="SALEAdvice" pointcut-ref="daopt" />
</aop:config>
<bean id="DAO" class="com.CRM.dao.CommonDAO">
<property name="sessionFactory" ref="CRMSessionFactory"></property>
<property name="map">
<map>
<entry key="crm" value-ref="CRMSessionFactory"></entry>
<entry key="sale" value-ref="SALESessionFactory"></entry>
</map>
</property>
</bean> <!-- 注入bo-->
<bean id="biz" class="com.CRM.bo.SalPlanManager">
<property name="dao" ref="DAO"></property>
</bean> <bean id="baseDataImpl" class="com.CRM.bo.BaseDataImpl">
<property name="dao" ref="DAO"></property>
</bean>
<bean id="reportImpl" class="com.CRM.bo.ReportImpl">
<property name="dao" ref="DAO"></property>
</bean>
<bean id="customer" class="com.CRM.bo.CustomerBizImpl">
<property name="dao" ref="DAO"></property>
</bean>
<bean id="serviceManagerBiz" class="com.CRM.bo.ServiceManager">
<property name="cstServiceDao" ref="DAO"></property>
</bean>
<bean name="/cstService"
class="com.CRM.struts.action.CstServiceAction">
<property name="serviceManager" ref="serviceManagerBiz"></property>
</bean>
<bean name="/cust" class="com.CRM.struts.action.CustomerAction">
<property name="customerBiz" ref="customer"></property>
</bean>
<bean name="/cstLinkman"
class="com.CRM.struts.action.CstLinkmanAction">
<property name="customerBiz" ref="customer"></property>
</bean>
<bean name="/cstActivity"
class="com.CRM.struts.action.CstActivityAction">
<property name="customerBiz" ref="customer"></property>
</bean>
<bean name="/orders" class="com.CRM.struts.action.OrdersAction">
<property name="customerBiz" ref="customer"></property>
</bean>
<bean name="/cstLost" class="com.CRM.struts.action.CstLostAction">
<property name="customerBiz" ref="customer"></property>
</bean>
<bean name="/baseData"
class="com.CRM.struts.action.BaseDataAction">
<property name="baseDataImpl" ref="baseDataImpl"></property>
</bean>
<bean name="/report" class="com.CRM.struts.action.ReportAction">
<property name="reportImpl" ref="reportImpl"></property>
</bean>
<bean id="daoAdvice" class="com.CRM.interceptor.DAOInterceptor"></bean>
<aop:config>
<aop:advisor pointcut-ref="daopt" advice-ref="daoAdvice" />
</aop:config><!-- task -->
<!--<bean id="cstLostTask" class="com.CRM.timer.CstLostTask">
<property name="customerBiz" ref="customer"></property>
</bean>
<bean id="methodInvokingTask" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject" ref="cstLostTask">
</property>
<property name="targetMethod">
<value>saveCstLost</value>
</property>
</bean>
<bean id="scheduleTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay">
<value>1000</value>
</property>
<property name="period">
<value>2000</value>
</property>
<property name="timerTask">
<ref local="methodInvokingTask"/>
</property>
</bean>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="scheduleTask"/>
</list>
</property>
<property name="daemon">
<value>true</value>
</property>
</bean> -->
<!--注入action-->
<bean name="/salchance"
class="com.CRM.struts.action.SalAction">
<property name="bo" ref="biz"></property>
</bean> <bean name="/salPlan" class="com.CRM.struts.action.SalPlanAction">
<property name="bo" ref="biz"></property>
</bean>
</beans>以前写的 现在自己也不会写了 做了一年的c/s开发 都不会B/S了 不知道对你有用不咯
一是,不同表的跨库查询,二是,同一张的跨库查询;对于第一种情况可以为Dao手动配置sessionFactory,即不要继承Hibernate的HibernateDaoSupport类对于第二种情况就需要动态切换sessionFactory了,具体可参考 Spring多数据源解决方案 ;
http://www.phome.asia/forum/thread/17857.html