-
MyBatis와 JPA 함께 사용할 때 설정Spring Boot/JPA 2024. 6. 14. 20:38728x90
# Configuration 등록
아래와 같이 @Configurateion에 @Bean으로 등록해서 함께 사용 가능하다.
package com.bookMngr.common.config.mybatis; import lombok.RequiredArgsConstructor; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.type.JdbcType; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.data.transaction.ChainedTransactionManager; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import java.util.List; @Configuration @RequiredArgsConstructor @MapperScan(value = "com.bookMngr.common.mybatis.mapper") public class MybatisConfig { @Value("${mybatis.type-aliases-package}") private String typeAliasesPackage; @Value("${mybatis.mapper-locations}") private List<String> mapperLocations; @Value("${mybatis.configuration.map-underscore-to-camel-case}") private boolean MapUnderscoreToCamelCase; @Value("${mybatis.configuration.call-setters-on-nulls}") private boolean callSettersOnNulls; @Value("${mybatis.configuration.jdbc-type-for-null}") private JdbcType jdbcTypeForNull; private final EntityManagerFactory entityManagerFactory ; @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{ final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sessionFactory.setDataSource(dataSource); sessionFactory.setMapperLocations(resolver.getResources(mapperLocations.get(0))); sessionFactory.setTypeAliasesPackage(typeAliasesPackage); org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(); configuration.setMapUnderscoreToCamelCase(MapUnderscoreToCamelCase); configuration.setCallSettersOnNulls(callSettersOnNulls); configuration.setJdbcTypeForNull(jdbcTypeForNull); sessionFactory.setConfiguration(configuration); return sessionFactory.getObject(); } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception{ return new SqlSessionTemplate(sqlSessionFactory); } @Bean public ChainedTransactionManager transactionManager(DataSource dataSource){ // JPA transactionManager JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(); jpaTransactionManager.setEntityManagerFactory(entityManagerFactory); // MYBATIS transactionManager DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); dataSourceTransactionManager.setDataSource(dataSource); // creates chained transaction manager ChainedTransactionManager transactionManager = new ChainedTransactionManager(jpaTransactionManager, dataSourceTransactionManager); return transactionManager; } }
728x90'Spring Boot > JPA' 카테고리의 다른 글
[JPA] 파라미터 바인딩 로그 보기 (0) 2023.10.22