2012-03-01 93 views
1

新的類和配置文件將打包在一個osgi包中。Spring HibernateTemplate在運行時添加映射

捆綁中的服務類將被Spring Spring配置文件注入Spring HibernateTemplate。

我可以在運行時添加hibernate映射(映射文件,實體類)嗎?
hibernate.hbm2ddl.auto會工作嗎?

在此先感謝!

回答

1

我想你應該閱讀this article
它有很好的示例源代碼和解釋如何更新SessionFactory。

1

假設你正在使用的註釋與數據庫表映射VO,這裏是一些示例代碼,動態獲取一個Spring的HibernateTemplate:

AnnotationSessionFactoryBean sessionFactoryBean = new AnnotationSessionFactoryBean(); 
//set annotated classes. 
sessionFactoryBean.setAnnotatedClasses(new Class<?>[]{VO1.class,VO2.class}); 
Properties props = new Properties(); 
//put all your hibernate configurations here 

props.setProperty("dataSource.show_sql", "true"); 
props.setProperty("dataSource.dialect", "org.hibernate.dialect.MySQL5Dialect"); 
.... 
sessionFactoryBean.setHibernateProperties(props); 

//Create DataSource Dynamically 
BasicDataSource dataSource = new BasicDataSource(); 
dataSource.setDriverClassName(...); 
dataSource.setUrl(...); 
dataSource.setUsername(...); 
dataSource.setPassword(...); 

sessionFactoryBean.setDataSource(ds); 

//tell sessionFactoryBean that you are ready. 
sessionFactoryBean.afterPropertiesSet(); 
SessionFactory sessionFactory = sessionFactoryBean.getObject(); 

HibernateTemplate template = new HibernateTemplate(); 
template.setSessionFactory(sessionFactory);