0
동일한 프로젝트에서 사용자 정의 구성과 함께 기본 구성 및 스프링 - 배틴과 함께 spring jpa를 사용합니다. Jpa 쿼리는 항상 빠르지 만, ibatis 쿼리는 때때로 느립니다. 무엇이 잘못 될 수 있습니다. 내 batis의 설정 :spring jpa와 함께 사용하는 ibatis의 업데이트가 느림
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {""}, sqlSessionFactoryRef = "mySqlSessionFactory")
public class DaoConfig {
@Value("${spring.datasource.url}")
private String databaseUrl;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${mybatis.mapperLocations}")
private Resource[] mapperLocation;
@Value("${mybatis.typeAliasesPackage}")
private String typeAliasesPackage;
private DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource(databaseUrl, username, password);
dataSource.setDriverClassName(driverClassName);
return dataSource;
}
private ManagedTransactionFactory dataSourceTransactionManager() throws PropertyVetoException {
return new ManagedTransactionFactory();
}
@Bean(name = "mySqlSessionFactory")
public SqlSessionFactory mySqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setTransactionFactory(dataSourceTransactionManager());
sessionFactory.setMapperLocations(mapperLocation);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
return sessionFactory.getObject();
}
}
그리고 의존성 :
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
dataSource() 및 dataSourceTransactionManager() 메서드도 @Bean으로 주석을 추가해야하지 않습니까? 그렇지 않으면 mySqlSessionFactory()를 호출 할 때마다 새 연결을 작성하게됩니다. –
@MichaelPeacock이 설명을 답으로 복사 할 수 있습니까? 나는 네가 옳다고 생각한다. 나는 그것을 점검하고있다. 고마워! – ipoteka