OSGi、Spring、Hibernate集成:动态注册实体类
2010-05-29 15:16
369 查看
网上提供的关于在OSGi环境下的集成Spring、Hibernat的方案总是存在以下一种或多种问题:
1、不能提供多个SessionFactory的统一管理
2、不能提供实体类的动态注册
3、不方便测试
4、平台依赖度高
先看看我提供的解决方案中各Bundle之间的关系图:
从上图可看出,业务实体与业务逻辑Bundle是独立自然的,不需要象某些解决方案把实体类作为Hibernate的Fragment。实际上,本解决方案中完全可以不将实体类在META-INF.MF文件中Export.
解决思路:
1、org.span.orm中定义SessionFactoryService接口并提供其抽象实现,由org.span.orm.hibernate来实现这个接口。
2、在会话工厂服务定义Bundle中通过org.span.orm和org.span.hibernate提供的类,定义SessionFactoryService服务的配置,并注册为SessionFactoryService服务。
3、在业务实体与业务逻辑Bundle中,注册实体类时,首先从SessionFactoryService服务中得到相关SessionFactory的配置,通过此配置来构造一个包括了它注册的实体类的SessionFactory,再将其中的实体类关系合并到SessionFactoryService实现中的SessionFactory中。这其中因org.hibernate.impl.SessionFactoryImpl中所有的实体映射关系是保存到一些不可修改的final Map对象中,因此只能通过访问私有成员变量的方式去合并两个SessionFactoryImpl.
方案特性:
每个业务实体与业务逻辑Bundle是独立自然的
通过SessionFactoryService服务对所有会话工厂统一管理。
在SessionFactoryService服务中使用内置HSQLDB为每个SessionFactory(根据名称区别)提供默认的会话工厂(使用内存数据库或文件数据库),方便测试。
方案不依赖特定OSGi平台。
源代码、文档及Bundle下载:http://download.csdn.net/source/2406756
测试环境:equinox3.5.2。其它用到的Bundle包括hibernate、hibernate-annotation、hsqldb、spring、spring-osgi等。请到http://www.springsource.com/repository/下载。
注:使用前请在OSGi的启动目录下建立目录logs/jta目录。在spring dm2下使用,需要先修改config/com.springsource.kernel.userregion.properties文件,在packageImports=后加入javax.naming.*,还需要安装spring-osgi 2.0.0 M1相关Bundle.
1、不能提供多个SessionFactory的统一管理
2、不能提供实体类的动态注册
3、不方便测试
4、平台依赖度高
先看看我提供的解决方案中各Bundle之间的关系图:
从上图可看出,业务实体与业务逻辑Bundle是独立自然的,不需要象某些解决方案把实体类作为Hibernate的Fragment。实际上,本解决方案中完全可以不将实体类在META-INF.MF文件中Export.
解决思路:
1、org.span.orm中定义SessionFactoryService接口并提供其抽象实现,由org.span.orm.hibernate来实现这个接口。
2、在会话工厂服务定义Bundle中通过org.span.orm和org.span.hibernate提供的类,定义SessionFactoryService服务的配置,并注册为SessionFactoryService服务。
3、在业务实体与业务逻辑Bundle中,注册实体类时,首先从SessionFactoryService服务中得到相关SessionFactory的配置,通过此配置来构造一个包括了它注册的实体类的SessionFactory,再将其中的实体类关系合并到SessionFactoryService实现中的SessionFactory中。这其中因org.hibernate.impl.SessionFactoryImpl中所有的实体映射关系是保存到一些不可修改的final Map对象中,因此只能通过访问私有成员变量的方式去合并两个SessionFactoryImpl.
方案特性:
每个业务实体与业务逻辑Bundle是独立自然的
通过SessionFactoryService服务对所有会话工厂统一管理。
在SessionFactoryService服务中使用内置HSQLDB为每个SessionFactory(根据名称区别)提供默认的会话工厂(使用内存数据库或文件数据库),方便测试。
方案不依赖特定OSGi平台。
源代码、文档及Bundle下载:http://download.csdn.net/source/2406756
测试环境:equinox3.5.2。其它用到的Bundle包括hibernate、hibernate-annotation、hsqldb、spring、spring-osgi等。请到http://www.springsource.com/repository/下载。
注:使用前请在OSGi的启动目录下建立目录logs/jta目录。在spring dm2下使用,需要先修改config/com.springsource.kernel.userregion.properties文件,在packageImports=后加入javax.naming.*,还需要安装spring-osgi 2.0.0 M1相关Bundle.
相关文章推荐
- Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(二)
- 讨论一下hibernate如何动态注册一个动态生成的实体类
- Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(一)
- 使用Spring集成Hibernate配置,根据实体类自动创建表
- Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(一)
- 讨论一下hibernate如何动态注册一个动态生成的实体类
- osgi与流行的框架(spring,struts,hibernate等)的集成
- osgi与流行的框架(spring,struts,hibernate等)的集成
- osgi与流行的框架(spring,struts,hibernate等)的集成 .
- hibernate+spring+struts集成,并自动生成实体类和DAO层的步奏
- Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(二)
- hibernate动态模型在web中使用 与spring集成一起
- osgi与流行的框架(spring,struts,hibernate等)的集成
- Hibernate--根据实体类获得表名、主键名、字段名(与Spring集成)(一)
- osgi与流行的框架(spring,struts,hibernate等)的集成
- osgi与流行的框架(spring,struts,hibernate等)的集成
- 关于Hibernate与spring集成更新无效的分析
- Spring 和 Hibernate的集成
- spring整合hibernate中的动态代理问题
- SSH开发环境的配置:web.xml、Spring集成hibernate和Spring集成Struts2