OSGI企业应用与Aries开源项目(2)

阅读更多
    Aries JPA container是一个持久化容器,但它不类似Hibernate,而只是相当于Hibernate的一部分,它还需要如OpenJPA之类的JPA实现的支持,才能真正地完成持久化的工作。

    一个常见的OSGI JPA应用可以是这样的:若干个用JPA的规范编写的实体(Entity),集合在一个Bundle里,并用persistence.xml描述成一个持久化单元(persistence unit)。而persistence.xml里则通过JNDI将JDBC DataSource与该域绑定。最后,Aries JPA container就能将持久化单元的EntityManagerFactory或EntityManager提供给应用来引用。
   
    以下是一个例子:

    persistence.xml:
   


  
    org.apache.openjpa.persistence.PersistenceProviderImpl
    osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/jpa01DS)
    com.ponder.examples.jpa01.CustomerEntity
    true
    
      
    
  



blueprint.xml:



    
        
            
            
            
            
            
            
            
             
            
            
            
             
            
            
            
            
            
            
            
        
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
    
        
            
        
    



    其中的关键点如下:
    1、持久化单元(PU)定义(persistence.xml);
    2、数据源(Datasource):采用apache的dbcp;
    3、blueprint通过placeholder配置DataSource,并发布DataSource服务,并注册到JNDI ;
    4、PU通过jndi引用Datasource;
    5、部署时,karaf通过configAdmin服务将etc/com.ponder.examples.jpa01.cfg的配置信息读入到blueprint的placeholder处。

你可能感兴趣的:(osgi,jpa,企业应用,jdbc,hibernate)