利用Hibernate优势加快 SCA 模块实现(四)

日期: 2007-12-13 作者:张俊青 来源:TechTarget中国

  6. 为StockService组件导出WS绑定

  在图-8所示的Assembly Diagram中,在StockService组件上点右键弹出的菜单中,选择export分别为该组件导出Web service绑定,命名为StockServiceExport,然后为StockService增加一个Stand-alone References,以使得StockService 组件具有为本地客户端提供服务的能力。

  图-8:为StockService导出的Web service绑定

 
  7. 自动生成Module的Java实现代码

  在图-8所示的Assembly Diagram所示的StockService组件上点右键弹出的菜单中,选择Generate Implementation (如果已经生成过Java实现,则为Regenerate Implementation)来自动生成Java实现代码。

  图-10:自动生成Java实现代码

 
  在弹出的窗口中,为生成的代码选择所在的package。图-11中所示,请选择module.stock.implementation:

  图-11:为即将生成的代码选择package

 
  生成以后的Assembly Diagram有一些变化,在StockService组件的图示上会增加一个J的标志,表示是Java implementation, 如图-12所示:

  图-12: 生成Java实现后的Assembly Diagram

  四、引入Hibernate实现StockService组件

  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用面向对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用。本文讨论的在对SCA模块的实现时,我们使用Hibernate实现SCA的持久层。

  使用Hibernate之后,StockService模块,SDO,Java Bean, DB之间的关系可以总结为以下图示:

  图-13

 
  1.下载Hibernate
  您可以到http://www.hibernate.org网站上下载Hibernate。本文的示例使用的是3.2.0版本,您可以到下列地址下载hibernate-3.2.0.ga.zip:
  http://prdownloads.sourceforge.net/hibernate/hibernate-3.2.0.ga.zip?download 下载后解压到本地磁盘。

  2.在StockModule项目中配置Hibernate运行环境

  在第一部分,我们已经为StockService模块生成实现代码,我们需要将其中的每个方法予以实现。实现类名为: module.stock.implementation.StockServiceImpl,我们将把相关的Java对象和Hibernate对象放到同一级路经下,即:module.stock.implementation,这个包所在的文件夹路径为:

  StockModulegensrcmodulestockimplementation

  将运行Hibernate所需要的jar添加到Java Build Path中

  在StockModule项目文件夹中新建一个lib目录,将以下jar包从hibernate解压之后的目录拷贝到StockModulelib目录下:

antlr-2.7.6.jar
asm.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
hibernate3.jar
jta.jar
log4j-1.2.11.jar

  然后,在StockModule项目的Properties中,点击”Add JARs”按钮,将这些包添加到StockModule项目的Java Build Path中,添加以后如图-14所示:

  图-14:将Hibernate所需的Jar包添加到Java Build Path中

 
  配置数据库连接信息

  将StockModule发布到WID中的Websphere Process Server v6.0,然后在管理控制台增加名称为jdbc/localdb的JNDI配置,并保证测试连接成功:

  Step1: 设置DB2_JDBC_DRIVER_PATH,指定DB2 JDBC驱动的位置
例如:C:Program FilesIBMSQLLIBjava

  Step2: 新建J2C认证信息

  在Security -> Global security -> JAAS Configuration -> J2C Authentication data中,新增J2C认证信息,这里的用户名和密码是为登录数据用的。

  图-15:新增J2C认证数据

 
  Step3: 新增JDBC Providers:DB2 Legacy CLI-based Type 2 JDBC Driver
选择Resources -> JDBC Providers 菜单,点击New按钮:

  图-16:新增JDBC Providers

 
  保存之后,在其Data Sources属性中,新增jndi_localdb的JNDI配置:

  图-17:新增jndi_localdb的JNDI配置

 
  在module.stock.implementation目录中创建hibernate.cfg.xml并进行配置

  主要配置以下几项:

hibernate.connection.datasource:jdbc/localdb(JNDI名称)
connection.pool_size:1
dialect:org.hibernate.dialect.DB2Dialect
show_sql:true(将Hibernate生成的SQL语句以SystemOut的方式输出到日志中)
mapping resource:引入Hibernate映射文件
配置完毕的hibernate.cfg.xml文件如下表:

  清单-3:hibernate.cfg.xml文件内容
               
<?xml version=’1.0′ encoding=’utf-8′?>                                           
<!DOCTYPE hibernate-configuration PUBLIC                                            
        “-//Hibernate/Hibernate Configuration DTD 3.0//EN”                   
        “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>                                                        
    <session-factory>                                                            
        <!– Database connection settings, we use jndi here –>                  
        <property name=”hibernate.connection.datasource”>              
   jdbc/localdb</property>                                                          
        <property name=”connection.pool_size”>1</property>       
        <!– SQL dialect –>                                                     
        <property name=”dialect”>                                      
   org.hibernate.dialect.DB2Dialect</property>                                      
        <!– Enable Hibernate’s automatic session context management –>         
        <property name=”current_session_context_class”>                
   thread</property>                                                                
        <!– Disable the second-level cache  –>                                 
        <property name=”cache.provider_class”>                         
   org.hibernate.cache.NoCacheProvider</property>                                   
        <!– Echo all executed SQL to stdout –>                                 
        <property name=”show_sql”>true</property>                
        <mapping resource=                                                          
   “/gen/src/module/stock/implementation/Stock.hbm.xml”/>                    
        <mapping resource=                                                          
   “/gen/src/module/stock/implementation/StockType.hbm.xml”/>                
        <mapping resource=                                                          
   “/gen/src/module/stock/implementation/StockAccount.hbm.xml”/>             
        <mapping resource=                                                          
   “/gen/src/module/stock/implementation/StockHolder.hbm.xml”/>              
        <mapping resource=                                                          
   “/gen/src/module/stock/implementation/StockMemo.hbm.xml”/>                
    </session-factory>                                                           
</hibernate-configuration>                                                       
 
  该文件将在实例化SessionFactory的时候被引用,Hibernate将根据此文件创建数据库连接池,并根据其中的mapping 定义建立*.hbm.xml与JavaBean之间的映射关系。有关SessionFactory,请参考实现StockService模块一节的内容。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 内存数据网格提供商一头扎进Java

    10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。