• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Mybatis, JPA 혼용사용

21.09.27 16:56 작성 조회수 915

0

안녕하세요 강의 잘 듣고 있습니다.

다름이 아니라, 기존 진행하던 프로젝트가 Spring, Mybatis를 사용하고 있어, JPA를 추가하여 혼용 사용하려고 합니다.

하나의 DB를 바라보게 하기 위해서 Datasource를 나눠서 생성하고,  trancsaction을 Mybatis용 JPA용으로 나눠서 생성하였고, ChainedTransactionManager를 사용하여 트랜잭션을 묶어줬습니다.

하지만 계속 다음과 같은 에러가 발생하고 있습니다.

[o.s.d.r.c.RepositoryConfigurationDelegate] - Multiple Spring Data modules found, entering strict repository configuration mode!

이런 문제가 발생했을때 어떻게 처리해야할까요 ㅜㅜㅜ 도움이 필요합니다.

config.xml 파일입니다..

<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.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/tx http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">

<value>classpath:mybatis/jdbc.properties</value>
</property>
</bean>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxWait" value="3000" />
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="50" />
<!-- connection - validation query -->
<property name="validationQuery" value="select 1"/>
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="7200000" />
</bean>

<bean id="jpadataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxWait" value="3000" />
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="50" />
<!-- connection - validation query -->
<property name="validationQuery" value="select 1"/>
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="7200000" />
</bean>



<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:mybatis/mapper/*.xml" />
</bean>


<bean id="transactionManager" class="org.springframework.data.transaction.ChainedTransactionManager">
<constructor-arg>
<list>
<ref bean="mybatisTransactionManager"/>
<ref bean="jpaTransactionManager"/>
</list>
</constructor-arg>
</bean>

<bean id="mybatisTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="jpaTransactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="jpaEntityManagerFactory" />
</bean>

<bean id="jpaEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="jpadataSource"></property>
</bean>

<tx:annotation-driven />

<aop:config proxy-target-class="true">
<aop:pointcut id="serviceOperation" expression="execution(* com.xii..*Service.*(..))" />
<aop:advisor id="transactionAdvisor" pointcut-ref="serviceOperation" advice-ref="txAdvice"/>
</aop:config>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" rollback-for="Exception"/>
<tx:method name="save*" rollback-for="Exception"/>
<tx:method name="update*" rollback-for="Exception"/>
<tx:method name="delete*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>



<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>


<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xii" />
</bean>

<jpa:repositories base-package="com.xii"/>

</beans>

답변 1

답변을 작성해보세요.

0

안녕하세요. brinst07님

죄송하지만 질문 안내에 있는 것 처럼 학습에 관련된 질문을 올려주시길 부탁드립니다.

저도 마음으로는 도움을 드리고 싶지만, 하루에도 수 많은 분들이 질문을 올려주십니다. 그래서 학습과 관련된 질문에 초점을 맞추는 것이 맞다 생각합니다. 다시한번 이해를 부탁드립니다.

감사합니다.

brinst07님의 프로필

brinst07

질문자

2021.09.28

넵 알겠습니다 강사님. 제가 생각이 짧았네요

답변주셔서 감사합니다 ^^