在企业应用中,持久化无疑是其中非常重要的一环,尽管OSGi的规范中也有负责持久数据、属性的服务规范,但对于企业应用而言那些显然是不够的,这里就以目前Java界流行的Hibernate为例来看看如何集成Hibernate到OSGi中,使得我们能够很简单在OSGi中使用Hibernate进行持久化。
首先来看看在传统的Java应用中,是如何使用Hibernate的,在不使用类似spring ORM Template这些封装了Hibernate东西的情况下,通常都是对外提供一个公共的封装了通用操作的Dao类,方便其他的Dao或者Service直接使用,在集成到OSGi中仍然希望是如此,那么这步怎么做呢?
非常的简单,在Eclipse中新建一个Plugin Project,然后把Hibernate所需要的lib放入project的lib中,将在传统Java应用中的象HibernateUtil、CommonDao这些类直接copy到当前project中,CommonDao是需要暴露给其他的Plugin project使用的,这里就需要将CommonDao的package加入到Project的export-package描述中了,接下来就是基于DS的方式对外提供CommonDao服务。
通过上面这样的方法就已经可以在基于OSGi的应用中使用CommonDao来完成持久化层的操作了,但这时会发现有个问题,在HibernateUtil这样的提供session管理的类中通常需要指定hibernatecfg.xml的位置,那么按照上面的做法自然是只能在上面的plugin project中放置这个文件了,在这个文件中配置了需要加载的po的映射文件,这样呢,就使得目前基于OSGi的应用需要将系统中所有的持久PO都放入这个Project中,而不是放入各自独立的Plugin Project中,而Dao则可以放到各自独立的Plugin Project中去,基于这样的方法,就构成了在基于OSGi的应用中通常是如下的方式:
还有一个方法就是每个Plugin Project维护自己的hibernate.cfg.xml,这样各自的po也就可以放在各自独立的Plugin project中,但这样的方法带来的问题就是各个Plugin project都会产生一个Hibernate SessionFactory,而且当系统的持久模型较为复杂的时候就更麻烦了,一个PO需要存在在几个Plugin Project中的时候,那样就会出现session中数据不一致的现象,所以暂时不去采用这种方法。
当然,相信将来会有更好的方式,需要解决的主要是统一加载各plugin project中的映射文件、PO的加载,在目前的情况下,要形成一个对外封闭的通用Hibernate Plugin Project还是很麻烦的,这种现象在集成MVC框架等等的时候都是会碰到的,这也反应了传统的开源框架在对于这种真正模块化的方式上的支撑仍然是非常不够的,传统的开源框架更多的停留于概念上的模块化。
分享到:
相关推荐
利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...
扩展Tomcat支持OSGi应用服务项目文件。其项目为eclipse工程。项目说明请参见我的blog《扩展Tomcat支持OSGi应用服务》:http://blog.163.com/haizai219@126/blog/static/44412555200971223629869/
Equinox开发OSGi应用程序
OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用博文源码
讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的
基于OSGi和Spring开发企业级Web应 目前OSGi和Spring已经受到了广泛的关注,如果我们将OSGi和Spring结合,更能充分发挥二者各自的特长,同时更好地满足企业级应用开发的需求。
osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍
OSGI企业应用开发(十四)整合Spring、Mybatis、Spring MVC博文源码
首先解释了实现上述应用程序所必需了解的基本概念和基础知识,并结合示例代码演示 OSGi 开发的一些重要技术,最后探讨了基于 OSGi 应用程序一般所采用的架构,以及如何将 Equinox OSGi 应用程序脱离 Eclipse 而部署...
基于OSGi和Spring开发Web应用
深入理解OSGi:Equinox原理、应用与最佳实践.pdfOSGi应用开发
开发一个简单的 OSGi Web 应用实例,如何进行OSGI开发的 实例有利于入门着进行使用
辛苦研究了一个多月,终于搭建成了一个可用于实际应用开发的OSGI-WEB框架,采用OSGi+SpringMVC+Spring+Hibernate+Virgo技术,鉴于此类技术架构甚少,特提供出来供大家参考。 使用步骤: 一、下载STS搭建Osgi开发...
OSGI企业版本的技术规范,OSGI核心框架
基于OSGi和Spring开发Web应用教程 教程
《Java应用架构设计 模块化模式与OSGi》PDF版本下载
基于OSGi和Spring开发Web应用
基于OSGi和Spring开发Web应用的博文对应的代码
Java应用架构设计模块化模式与OSGi
http://www.cnblogs.com/kira2will/p/5040264.html