杰表与Hibernate的整合

本文介绍如何使用杰表设计器集成Hibernate,实现从数据库中获取并展示各省各市的发展情况。通过创建表结构、配置Hibernate文件及编写Java Action类等步骤,详细展示了整个集成过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

杰表设计器除了对jdbc、csv、javabean及xml数据集的支持外也支持hibernate。如果你的系统采用hibernate作为数据层,那么你将可以直接利用hibernate的数据对象(model)作为数据源,以下是对杰表设计器与Hibernate做为数据集的一个实例的详解:
本示例是展示各省各市发展情况,表结构如下所示:
1. CREATE   TABLE   IF   NOT   EXISTS  Province( Guid  INT  NOT   NULL  AUTO_INCREMENT,
name  VARCHAR ( 50 )  NOT   NULL ,PRIMARY   KEY  (Guid)) TYPE = InnoDB;
2. CREATE   TABLE   IF   NOT   EXISTS  City(Guid  INT NOT   NULL  AUTO_INCREMENT,
name  VARCHAR ( 50 )   NOT   NULL ,Area VARCHAR (50),Population VARCHAR (50),
GDP VARCHAR(10),ProvinceID   INT  NOT   NULL ,PRIMARY   KEY  (Guid)) TYPE = InnoDB;
3. ALTER   TABLE  City  ADD   CONSTRAINT  CityRFProvince  FOREIGN   KEY  (ProvinceID) 
REFERENCES  Province (Guid)  ON   DELETE   CASCADE   ON   UPDATE   RESTRICT ;
Province表做为主控方,City表做为被控方,两者之间是单向的一对多关系。用hibernate工具生成的Province.hbm.xmlCity.hbm.xml文件及model,生成后目录如图1-1所示:
 
                                   图(1-1)
其中Province.hbm.xml代码如下所示:
Province.hbm.xml
. . .
<class name="com.jatools.test.Province" table="province" catalog="hib_test">
        
<id name="guid" type="java.lang.Integer">
         
<column name="Guid" /> <generator class="assigned" />  </id>
        
<property name="name" type="java.lang.String">
            
<column name="name" length="50" not-null="true" />
        
</property>
        
<set name="cities" inverse="true">
            
<key> <column name="ProvinceID" not-null="true" /> </key>
            
<one-to-many class="com.jatools.test.City" />
        
</set>
</class>
. . .
其中City.hbm.xml代码如下所示:
    City.hbm.xml  
  .   .   .
  
<class name="com.jatools.test.City" table="city" catalog="hib_test">
        
<id name="guid" type="java.lang.Integer">
            
<column name="Guid" />
            
<generator class="assigned" />
        
</id>
        
<property name="name" type="java.lang.String">
            
<column name="name" length="50" />
        
</property>
        
<property name="area" type="java.lang.String">
            
<column name="Area" length="50" />
        
</property>
        
<property name="population" type="java.lang.String">
            
<column name="Population" length="50" />
        
</property>
        
<property name="gdp" type="java.lang.String">
            
<column name="GDP" length="10" />
        
</property>
    
</class>
  .   .   .
Model及配制文件都弄好了后我们看一下Hibernate的配置文件hibernate.cfg.xml的内容,如下所示:
hibernate.cfg.xml
. . .
<property name="connection.username">root</property>
        
<property name="connection.url">
            jdbc:mysql://127.0.0.1:3306/hib_test
        
</property>
        
<property name="dialect">
            org.hibernate.dialect.MySQLDialect
        
</property>
        
<property name="myeclipse.connection.profile">mysql</property>
        
<property name="connection.password">123456</property>
        
<property name="connection.driver_class">
            com.mysql.jdbc.Driver
        
</property>
        
<mapping resource="com/jatools/test/Province.hbm.xml" />
        
<mapping resource="com/jatools/test/City.hbm.xml" />
这时你完成了以上的所有操作,那么现在可以编写Action类了,如下所示:
public class ProvinceAction...{
public static List getList()...{
        Session session
=HibernateSessionFactory.getSession();
        Query query
=session.createQuery("from Province");
        List list
=query.list();
        
return list;
    }

}
//本类主要是产生list对象本返回
现在我们开始杰表设计器与hibernate的集成:
1.我们将图1-1所示目录打成jar包(test.jar)
2.将test.jar复制到杰表设计器目录下的lib目录下
3.将hibernate.cfg.xml配制文件复制到杰表设计下bin目录下
完成以上三步操作我们就完成了杰表设计器和hibernate的整合,以下我们开始把这个示例用杰表展示出来,
具体操作如下所示:
 1.打开杰表设计器,新建一个空白的报表,然后右键单击右侧的root目录选择添加java数据选项.
   这时会弹出窗口如图1-2所示:
                    图(1-2)
                                   (1-3)
2.在打开图(1-2)窗口后我们添加两个嵌套数据,公式定义及名称如图(1-2),图(1-3)所示,添加后的目录如图(1-4)所示:
         图(1-4)
 
这时在左侧报表设计区内添加一个表格,做如图(1-5)的设置
 
好了,这时所有的操作的完成,让我们看看他的显示效果吧:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值