下面列出了org.hibernate.tool.schema.TargetType#org.springframework.orm.hibernate5.LocalSessionFactoryBean 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private SessionFactory createSessionFactory(Properties properties, DataSource dataSource, String[] packagesToScan) {
if (dataSource == null)
throw new NullPointerException("数据源不存在,无法初始化Hibernate环境!");
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setHibernateProperties(properties);
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setPackagesToScan(packagesToScan);
try {
sessionFactoryBean.afterPropertiesSet();
return sessionFactoryBean.getObject();
} catch (IOException e) {
logger.warn(e, "初始化Hibernate环境[{}]时发生异常!", converter.toString(packagesToScan));
return null;
}
}
private void outputDdl(String packageName, String dialect, String fileName) {
LocalSessionFactoryBean sfBean = sfBean(packageName, dialect);
StandardServiceRegistry serviceRegistry = sfBean.getConfiguration().getStandardServiceRegistryBuilder().build();
try {
String outputFile = OutputRoot + fileName;
Files.deleteIfExists(Paths.get(outputFile));
Metadata metadata = metadata(serviceRegistry, sfBean.getMetadataSources());
SchemaExport export = new SchemaExport();
export.setDelimiter(";");
export.setFormat(FormatSql);
export.setOutputFile(outputFile);
export.create(EnumSet.of(TargetType.SCRIPT, TargetType.STDOUT), metadata);
} catch (Exception e) {
throw new InvocationException(e);
} finally {
StandardServiceRegistryBuilder.destroy(serviceRegistry);
}
}
@Bean(name = "sessionFactory")
public LocalSessionFactoryBean hibernate5SessionFactoryBean(){
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource(appContext.getBean(HikariDataSource.class));
localSessionFactoryBean.setAnnotatedClasses(
AppUser.class
);
Properties properties = new Properties();
properties.put("hibernate.dialect","org.hibernate.dialect.MySQLDialect");
//properties.put("hibernate.current_session_context_class","thread");
properties.put("hibernate.hbm2ddl.auto","update");
localSessionFactoryBean.setHibernateProperties(properties);
return localSessionFactoryBean;
}
private void outputDdl(String packageName, String dialect, String fileName) {
LocalSessionFactoryBean sfBean = sfBean(packageName, dialect);
StandardServiceRegistry serviceRegistry = sfBean.getConfiguration().getStandardServiceRegistryBuilder().build();
try {
String outputFile = OutputRoot + fileName;
Files.deleteIfExists(Paths.get(outputFile));
Metadata metadata = metadata(serviceRegistry, sfBean.getMetadataSources());
SchemaExport export = new SchemaExport();
export.setDelimiter(";");
export.setFormat(FormatSql);
export.setOutputFile(outputFile);
export.create(EnumSet.of(TargetType.SCRIPT, TargetType.STDOUT), metadata);
} catch (Exception e) {
throw new InvocationException(e);
} finally {
StandardServiceRegistryBuilder.destroy(serviceRegistry);
}
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource(dataSource());
localSessionFactoryBean.setPackagesToScan(packagesToScan());
localSessionFactoryBean.setHibernateProperties(additionalProperties());
return localSessionFactoryBean;
}
@Bean
public LocalSessionFactoryBean sessionFactory(DataSource dataSource) {
LocalSessionFactoryBean sfb = new LocalSessionFactoryBean();
sfb.setDataSource(dataSource);
sfb.setPackagesToScan(new String[] { "com.packt.patterninspring.chapter8.bankapp.model" });
Properties props = new Properties();
props.setProperty("dialect", "org.hibernate.dialect.H2Dialect");
sfb.setHibernateProperties(props);
return sfb;
}
@Bean("sessionFactory")
public LocalSessionFactoryBean localSessionFactory(DataSource dataSource, Properties hibernateProperties) {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setPackagesToScan(new String[] { "org.packt.hiber.core.model.data" });
sessionFactory.setHibernateProperties(hibernateProperties);
return sessionFactory;
}
@Bean
public HibernateTransactionManager db1TransactionManager(DataSource dataSource,LocalSessionFactoryBean localSessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(localSessionFactory.getObject());
txManager.setDataSource(dataSource);
return txManager;
}
private SessionFactoryImpl createSessionFactoryBean( String _name, AtomikosDataSourceBean _ds ) {
String head = "jees.jdbs.config." + _name + ".";
String hibernate = head + "hibernate.";
String orm = CommonConfig.getString( head + "orm" );
String bean = _name + "SessionFactory";
BeanDefinitionBuilder beanDefinitionBuilder =
BeanDefinitionBuilder.rootBeanDefinition(LocalSessionFactoryBean.class);
if( orm.equalsIgnoreCase("hibernate") ){
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.dialect",
CommonConfig.getString( hibernate + "dialect","org.hibernate.dialect.MySQL55Dialect") );
hibernateProperties.setProperty("hibernate.show_sql",
CommonConfig.getString( hibernate + "showSql","true" ) );
hibernateProperties.setProperty("hibernate.transaction.factory_class",
CommonConfig.getString( hibernate + "factoryClass","org.hibernate.transaction.JTATransactionFactory" ) );
hibernateProperties.setProperty("hibernate.hbm2ddl.auto",
CommonConfig.getString( hibernate + "hbm2ddl", "none" ) );
hibernateProperties.setProperty("hibernate.transaction.jta.platform",
CommonConfig.getString( hibernate + "platform", "com.jees.core.database.config.AtomikosJtaPlatform" ) );
hibernateProperties.setProperty("hibernate.transaction.coordinator_class",
CommonConfig.getString( hibernate + "coordinatorClass","jta" ) );
beanDefinitionBuilder.addPropertyValue("dataSource", _ds);
beanDefinitionBuilder.addPropertyValue("packagesToScan",
CommonConfig.getString( head + "packagesToScan" ) );
beanDefinitionBuilder.addPropertyValue("hibernateProperties", hibernateProperties);
}
ConfigurableApplicationContext context = (ConfigurableApplicationContext) CommonContextHolder.getApplicationContext();
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();
log.debug("--创建LocalSessionFactoryBean[" + bean + "]。");
beanFactory.registerBeanDefinition(bean, beanDefinitionBuilder.getBeanDefinition());
return CommonContextHolder.getBean( bean );
}
@Bean
public LocalSessionFactoryBean getSessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(getDataSource());
sessionFactory.setPackagesToScan(new String[] { "com.bytestree.model" });
sessionFactory.setHibernateProperties(getHibernateProperties());
return sessionFactory;
}
/**
* Description: 获取session 工厂 <br>
*
* @author 王伟<br>
* @taskId <br>
* @return <br>
* @throws IOException
*/
public static SessionFactory getSessionFactory() {
synchronized (sessionFactoryHolder) {
String dbCode = DynamicDataSourceManager.getDataSourceCode();
SessionFactory sessionFactory = sessionFactoryHolder.get(dbCode);
if (sessionFactory == null) {
DataSource dataSource = DataSourceUtil.getDataSource(dbCode);
Assert.notNull(dataSource, ErrorCodeDef.DB_DATASOURCE_NOT_SET, dbCode);
LocalSessionFactoryBean bean = new LocalSessionFactoryBean();
bean.setDataSource(dataSource);
Map<String, String> map = PropertyHolder.getProperties();
Properties properties = new Properties();
int prefixLength = dbCode.length() + 1;
String prefix = dbCode + ".hibernate";
for (Entry<String, String> entry : map.entrySet()) {
if (entry.getKey().startsWith(prefix)) {
properties.setProperty(entry.getKey().substring(prefixLength, entry.getKey().length()),
entry.getValue());
}
}
bean.setHibernateProperties(properties);
bean.setPackagesToScan(getBasePackage());
try {
bean.afterPropertiesSet();
}
catch (IOException e) {
throw new InitializationException(e);
}
sessionFactory = bean.getObject();
sessionFactoryHolder.put(dbCode, sessionFactory);
}
return sessionFactory;
}
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource());
sessionFactoryBean.setPackagesToScan(packagesToScan());
sessionFactoryBean.setHibernateProperties(additionalProperties());
sessionFactoryBean.setHibernateIntegrators(new ClassImportIntegrator(Arrays.asList(PostDTO.class)));
return sessionFactoryBean;
}
@Bean
public SessionFactory entityManagerFactory(DataSource dataSource) throws Exception {
LocalSessionFactoryBean factory = new LocalSessionFactoryBean();
factory.setPackagesToScan(Config.class.getPackage().getName());
factory.setDataSource(dataSource);
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public PlatformTransactionManager hibernateTransactionManager(LocalSessionFactoryBean sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory.getObject());
return transactionManager;
}