Spring Legacy JPAマルチDB連動~!
仕事に慣れて忘れられた私のブログ.これからも少しずつ文章を書きます.
作業中に2つのDBをバインドする必要がある場合があります.
Spring LegacyバインドDBは一日中かかりました.
今度やると今日のように時間を無駄にしない.
1. Persistance.xmlファイル設定
2.Entity Manager bean設定
使用するデータソースを2回入力します.
作業中に2つのDBをバインドする必要がある場合があります.
Spring LegacyバインドDBは一日中かかりました.
今度やると今日のように時間を無駄にしない.
1. Persistance.xmlファイル設定
#1. Main DB Persistance.xml
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence.xsd">
<persistence-unit name="MainDB" transaction-type="RESOURCE_LOCAL">
<description>Persistence Unit</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
## Main DB와 연결된 class
<class>com.main.db1.MainDB</class>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
</properties>
</persistence-unit>
</persistence>
#2. Sub DB Persistance.xml
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence.xsd">
<persistence-unit name="subDB">
<description>Persistence Unit</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
## Sub DB와 연결된 class
<class>com.cogeni.main.db2.SubDB</class>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
</properties>
</persistence-unit>
</persistence>
注:堅持する.xmlでpersistence-unitnameを定義する必要があります.2.Entity Manager bean設定
使用するデータソースを2回入力します.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!-- EntityManagerSetting -->
<!-- MainDB-->
<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceXmlLocation" value="classpath:inote-data-persistence.xml" />
<property name="persistenceUnitName" value="MainDB" />
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.jdbc.use_streams_for_binary">false</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
</props>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl"><value>${hibernate.generate.ddl}</value></property>
<property name="showSql"><value>false</value></property>
</bean>
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="emf" />
</bean>
<!-- Sub DB -->
<bean id="emfOracle" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSourceOracle" />
<property name="persistenceXmlLocation" value="classpath:sub-data-persistence.xml" />
<property name="persistenceUnitName" value="subDB" />
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.jdbc.use_streams_for_binary">false</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
</props>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl"><value>true</value></property>
<property name="showSql"><value>false</value></property>
</bean>
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
</bean>
<bean id="transactionManagerOra" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="emfOracle" />
</bean>
<!-- Main DB-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/databaseName" />
<property name="username" value=""/>
<property name="password" value=""/>
<property name="maxTotal" value="" />
<property name="maxIdle" value="" />
<property name="validationQuery" value="" />
<property name="testOnBorrow" value="" />
</bean>
<!-- Sub DB -->
<bean id="dataSourceOracle" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value=""/>
<property name="password" value=""/>
<property name="maxTotal" value="" />
<property name="maxIdle" value="" />
<property name="validationQuery" value="" />
<property name="testOnBorrow" value="" />
</bean>
</beans>
3. Code// MainDB
// SubDB
コメントリンクReference
この問題について(Spring Legacy JPAマルチDB連動~!), 我々は、より多くの情報をここで見つけました https://velog.io/@ln1992/Spring-Legacy-JPA-multi-DB-연동テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol