jpa和mybadis混合事务不起作用了(之前是可以用的)会是什么影响了,后面有加入spring cloud和hibernate 自定义Id的生成器

minga1 2017-11-17 11:49:52
package com.ecaicn.cjyun.app.config;

import org.apache.ibatis.logging.LogFactory;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import java.util.Properties;

import javax.sql.DataSource;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef="entityManagerFactory", transactionManagerRef="jpaTransactionManager", basePackages = "com.ecaicn.cjyun.provider.repository")
@MapperScan("com.ecaicn.cjyun.provider.mapper")//Mapper扫描
public class DaoConfig {

private static final String NAMING_STRATEGY = "hibernate.physical_naming_strategy";
private static final String SNAKE_STRATEGY_IMPL = "org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy";

@Autowired
DataSource dataSource;

@Bean
public JpaVendorAdapter jpaVendorAdapter(){
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setDatabase(Database.MYSQL);
adapter.setShowSql(true);
adapter.setGenerateDdl(false);
adapter.setDatabasePlatform("org.hibernate.dialect.MySQLDialect");
return adapter;
}

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource){
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setDataSource(dataSource);
factory.setJpaVendorAdapter(jpaVendorAdapter());
factory.setPackagesToScan("com.ecaicn.cjyun.model.entity");
factory.setJpaProperties(hibernateProperties());
factory.afterPropertiesSet();
return factory;
}

@Bean
public JpaTransactionManager jpaTransactionManager(DataSource dataSource) {
JpaTransactionManager jtm = new JpaTransactionManager();
jtm.setEntityManagerFactory( entityManagerFactory(dataSource).getObject());
return jtm;
}

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
LogFactory.useStdOutLogging();
//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
return sessionFactory.getObject();
} catch (Exception e) {
throw new RuntimeException("sqlSessionFactory init fail", e);
}
}

private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put(NAMING_STRATEGY, SNAKE_STRATEGY_IMPL);
return properties;
}

}

...全文
151 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧