package com.aol.micro.server.spring.datasource.hibernate;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.aol.micro.server.config.ConfigAccessor;
import com.aol.micro.server.spring.datasource.JdbcConfig;
@Configuration
@EnableTransactionManagement
public class HibernateConfig {
@Resource(name="mainEnv")
private JdbcConfig env;
@Resource(name="mainDataSource")
private DataSource dataSource;
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory());
return transactionManager;
}
@Bean
public SessionFactory sessionFactory(){
return HibernateSessionBuilder.builder()
.packages(new ConfigAccessor().get().getDataSources().get(new ConfigAccessor().get()
.getDefaultDataSourceName()))
.env(env)
.dataSource(dataSource)
.build().sessionFactory();
}
}