我们大多数应用都采用了Hibernate作为底层的ORM框架,结合Spring框架,Spring容器启动后,SessionFactory就会被注入到各个业务的Dao层中去。
动态建表功能比较容易实现,我们可以new一个SessionFactory,然后把它的配置属性hibernate.hbm2ddl.auto改为update或create,就可以达到动态修改表结构的效果。
但若要加入新的hbm或class,需要重新调用SessionFactoryBean来获取一个全新的SessionFactory,这种方案试过了, 效果并不理想。重新加载,会导致大量的hbm或class文件重新加载,实在有点慢。并且严重影响现在注入SessionFactory的Dao。若 Dao采用动态构建SessionFactory,性能又是一问题。而Hibernate没有提供SessionFactory动态加入hbm或 Class文件。所以实在无计可施。
最终回到如何扩展Hibernate的SessionFactory类
我们提供了两个扩展的类(修改Hibernate中的两类,使其支持动态加入配置文件,并且能实时查询。
我们仅需要修改两个类,一个是Configuration,在其里面加一方法,如下:
public void doComplie(){
secondPassCompile();
}
修改SessonFactoryImpl类中加入以下方法,(有一些变量值不能修改的,请改为可修改)
参考:
http://blog.csdn.net/lingwing/article/details/7072651
分享到:
相关推荐
【标题】"bootstrapjava源码-Hepic_sample"是一个开源项目,主要展示了如何利用Java技术栈,特别是Spring、Hibernate和RESTful服务,结合Angular前端框架,来构建一个员工生物识别控制系统。这个项目提供了丰富的源...
Java编程十年精华笔记主要涵盖了Java开发中的核心框架技术,包括Struts、Spring和Hibernate,这些都是企业级应用开发中广泛使用的开源框架。以下是这些知识点的详细解释: **Java**:Java是一种面向对象的、跨平台...
2. 数据持久化、对象关系映射(Object-Relational Mapping,ORM)与事务管理:这部分可能会涉及如何使用Spring与各种ORM工具(例如Hibernate、JPA等)集成,如何管理数据库事务,确保数据的一致性。 3. 使用Spring ...
在此摘录中,两位作者将和你一起安装iBATIS并将其集成进你的Spring应用中。他们也阐明了怎样取得你已编写的SQL语句及把他们映射给iBATIS使用的Bean。最后,还讨论了iBATIS的优缺点,及为什么是这样的一种方式,即...
- 如何使用Querydsl JPA在Spring Roo工具中,以及如何从hibernate映射文件中生成模型。 5. **JDO查询** - 介绍Querydsl与Java数据对象(JDO)的集成使用,包含了Maven和Ant的集成指导。 6. **SQL查询** - 描述...