小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Spring Roo兩個(gè)數(shù)據(jù)庫(kù)的配置 | Easyigloo

 richsky 2012-04-23

兩個(gè)數(shù)據(jù)庫(kù),spring,roo,j2ee
經(jīng)常可以在Spring Roo論壇上看到一個(gè)經(jīng)常的問(wèn)題。問(wèn)題是“如何配置使得應(yīng)用可以處理兩個(gè)數(shù)據(jù)庫(kù)”。

這對(duì)Spring Roo來(lái)說(shuō),是足夠麻煩的問(wèn)題,這個(gè)問(wèn)題涉及了JPA和Spring持久化棧。所以,我相信這對(duì)所有的Spring開(kāi)發(fā)社區(qū)都要處理這個(gè)問(wèn)題。

假設(shè)讀者是Java開(kāi)發(fā)人員,對(duì)Spring Roo有些熟悉。我關(guān)注如何獲取配置。查看幫助,請(qǐng)?jiān)L問(wèn)http://www./roo。

解決問(wèn)題

創(chuàng)建了以下最小的Roo項(xiàng)目。修改配置,每個(gè)實(shí)體都來(lái)自于不同的獨(dú)立的數(shù)據(jù)庫(kù)。

project --topLevelPackage org.pragmatikroo.twodb
persistence setup --provider HIBERNATE --database MYSQL --userName <username> --password <password> --databaseName twodbone
logging setup --level DEBUG --package PERSISTENCE
entity --class ~.domain.DbOne
field string --fieldName name
entity --class ~.domain.DbTwo
field string --fieldName name
perform clean
perform eclipse
exit

原始Database.properties文件

database.password=<password>
database.url=jdbc\:mysql\://localhost\:3306/twodb
database.username=<username>
database.driverClassName=com.mysql.jdbc.Driver

修改后的Database.properties文件

database.password1=<password1>
database.url1=jdbc\:mysql\://localhost\:3306/twodbone
database.username1=<username1>
database.password2=<password1>
database.url2=jdbc\:mysql\://localhost\:3306/twodbtwo
database.username2=<username2>
database.driverClassName=com.mysql.jdbc.Driver

基本上,我已經(jīng)從原始文件復(fù)制了一個(gè)拷貝定義第二個(gè)數(shù)據(jù)庫(kù)。對(duì)其他文件的模式也是重復(fù)的。

修改后的Persistence.xml文件

<persistence-unit name="persistenceUnit1" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <class>org.josean.twodb.domain.DbOne</class>
      <exclude-unlisted-classes>true</exclude-unlisted-classes>
      <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/>
            <!-- Uncomment the following two properties for JBoss only -->
            <!-- property name="hibernate.validator.apply_to_ddl" value="false" /-->
            <!-- property name="hibernate.validator.autoregister_listeners" value="false" /-->
            </properties>
</persistence-unit>
<persistence-unit name="persistenceUnit2" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <class>org.josean.twodb.domain.DbTwo</class>
      <exclude-unlisted-classes>true</exclude-unlisted-classes>
      <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/>
            <!-- Uncomment the following two properties for JBoss only -->
            <!-- property name="hibernate.validator.apply_to_ddl" value="false" /-->
            <!-- property name="hibernate.validator.autoregister_listeners" value="false" /-->
            </properties>
</persistence-unit>

為第二個(gè)數(shù)據(jù)庫(kù)復(fù)制持久化單元代碼,定義了唯一的id。重要的是:添加。持久化單元處理的每個(gè)實(shí)體都必須包含在內(nèi)。

修改后的ApplicationContext.xml文件

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource1">
      <property name="driverClassName" value="${database.driverClassName}"/>
      <property name="url" value="${database.url1}"/>
      <property name="username" value="${database.username1}"/>
      <property name="password" value="${database.password1}"/>
      <property name="validationQuery" value="SELECT 1 FROM DUAL"/>
      <property name="testOnBorrow" value="true"/>
</bean>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory1">
      <property name="dataSource" ref="dataSource1"/>
      <property name="persistenceUnitName" value="persistenceUnit1"/>
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager1" />
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager1">
      <property name="entityManagerFactory" ref="entityManagerFactory1" />
</bean>
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource2">
      <property name="driverClassName" value="${database.driverClassName}"/>
      <property name="url" value="${database.url2}"/>
      <property name="username" value="${database.username2}"/>
      <property name="password" value="${database.password2}"/>
      <property name="validationQuery" value="SELECT 1 FROM DUAL"/>
      <property name="testOnBorrow" value="true"/>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager2">
      <property name="entityManagerFactory" ref="entityManagerFactory2"/>
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager2" />
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory2">
      <property name="dataSource" ref="dataSource2"/>
      <property name="persistenceUnitName" value="persistenceUnit2"/>
</bean>

其他文件的處理過(guò)程類似。添加屬性到entityManagerFactory beans中。

修改后的Web.xml文件

<filter>
      <filter-name>Spring OpenEntityManagerInViewFilter1</filter-name>
      <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
      <init-param>
            <param-name>entityManagerFactoryBeanName</param-name>
            <param-value>entityManagerFactory1</param-value>
      </init-param>
</filter>
<filter>
      <filter-name>Spring OpenEntityManagerInViewFilter2</filter-name>
      <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
      <init-param>
            <param-name>entityManagerFactoryBeanName</param-name>
            <param-value>entityManagerFactory2</param-value>
      </init-param>
</filter>

就是這樣!應(yīng)用可以部署和測(cè)試了。

總結(jié)

已經(jīng)演示了如何安裝Spring web應(yīng)用的上下文,使得應(yīng)用可以訪問(wèn)第二個(gè)數(shù)據(jù)庫(kù),尤其對(duì)Spring Roo開(kāi)發(fā)人員有用。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多