2014-02-21 31 views

回答

1

是的,你可以建議管理從春天和從applicationContext獲得。

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource" > 
     <property name="driverClassName" value="${database.driverClassName}"/> 
     <property name="url" value="${database.url}"/> 
     <property name="username" value="${database.username}"/> 
     <property name="password" value="${database.password}"/> 

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSourceOrderDetail" > 
     <property name="driverClassName" value="${database.driverClassName}"/> 
     <property name="url" value="${database.url.orderdetail}"/> 
     <property name="username" value="${database.username}"/> 
     <property name="password" value="${database.password}"/> 
    </bean> 

只需要有ID的不同的名稱,要恰當地注入

檢查this檢討如何能春季ibatis的整合,然後使用數據源豆

配置豆

或者,如果您要使用datasource-ds.xml,只需將兩個datasource xml文件放在應用程序上下文中的lib文件夾中,如果你使用的是jboss或tomcat。

UPDATE

<jpa:repositories base-package="com.staples.sa.pricemart.repository.pag" 
    entity-manager-factory-ref="entityManagerFactory" /> 

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    <qualifier value="pagTransactionManager" /> 
</bean> 

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactory"> 
    <property name="persistenceUnitName" value="persistenceUnit" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 
    </property> 
</bean> 
<jpa:repositories base-package="com.staples.sa.pricemart.repository.orderdetail" 
    entity-manager-factory-ref="entityManagerFactoryOrderDetail" /> 


<bean id="transactionManagerOrderDetail" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactoryOrderDetail" /> 
    <qualifier value="orderDetailTX" /> 
</bean> 


<bean 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactoryOrderDetail"> 
    <property name="persistenceUnitName" value="persistenceUnitOrderDetail" /> 
    <property name="dataSource" ref="dataSourceOrderDetail" /> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 
    </property> 
</bean> 

<!-- --> 

的persistence.xml需要這個樣子。 (需要完成XML配置)

<persistence-unit name="persistenceUnit" 
     transaction-type="RESOURCE_LOCAL"> 

而且

<!-- Add the persistence context for OrderDetail --> 
<persistence-unit name="persistenceUnitOrderDetail" 
    transaction-type="RESOURCE_LOCAL"> 
+0

你能告訴我please.So怎麼樣春天的交易,它可以處理兩個2個數據源。 – 9ine

+1

您需要針對不同的數據庫擁有不同的事務bean。 –

+0

@PradeepKrKaushal是的,我認爲是。 – 9ine

0

您可以爲通過聲明數據源豆,不同的ID在Spring上下文喜歡配置儘可能多的數據庫和 注入相應的屬性從屬性文件。如果兩個數據庫不同,那麼您處於分佈式事務的範圍內,並且您必須配置可以與JTA一起運行的Spring transaction manager。另外值得注意的是,Spring事務管理器僅僅是一個抽象概念,它需要配置外部JTA事務 管理器(如Bitrionix/Atomikos),或者如果在EE應用服務器上部署,則可以在JNDI註冊中心查找事務管理器。然後,當您標記事務邊界(可能使用Spring Transactional註釋)時,Spring將自動協調事務。

0

下面是示例代碼爲您

class Main { 
    public static void main(String args[]) throws Exception { 
    ApplicationContext ac = new ClassPathXmlApplicationContext("context.xml", Main.class); 
    DataSource dataSource = (DataSource) ac.getBean("dataSource"); 
    DataSource mysqlDataSource = (DataSource) ac.getBean("mysqlDataSource"); 

的context.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
    <property name="url" value="jdbc:oracle:thin:@oracle.devcake.co.uk:1521:INTL"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
</bean> 

<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://dbhost-prospring-psql/prospring"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
</bean> 

<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"> 
    <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> 
</bean> 

<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/> 

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 
相關問題