主题:[转帖]杰表与Hibernate的整合
新一篇: 中国报表漫谈--精典的帖子(转)
杰表设计器除了对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.xml及City.hbm.xml文件及model,生成后目录如图1-1所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image013.jpg[/img]
图(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所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image003.png[/img]
图(1-2)
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image005.png[/img]
图(1-3)
2.在打开图(1-2)窗口后我们添加两个嵌套数据,公式定义及名称如图(1-2),图(1-3)所示,添加后的目录如图(1-4)所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image007.png[/img]
图(1-4)
这时在左侧报表设计区内添加一个表格,做如图(1-5)的设置
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image009.png[/img]
好了,这时所有的操作的完成,让我们看看他的显示效果吧:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image018.jpg[/img]
杰表设计器是一款功能非常强大的报表设计器,他除了支持jdbc、csv、javabean及xml数据集外,还对hibernate进行了扩充,如果你的系统用了hibernate那么你将可以直接用杰表设计器引用你的hibernate制作报表,详情请登录http://www.jatools.com查阅。联系方式:QQ-332400035 e-mail:505bai@163.com
杰表设计器除了对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.xml及City.hbm.xml文件及model,生成后目录如图1-1所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image013.jpg[/img]
图(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所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image003.png[/img]
图(1-2)
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image005.png[/img]
图(1-3)
2.在打开图(1-2)窗口后我们添加两个嵌套数据,公式定义及名称如图(1-2),图(1-3)所示,添加后的目录如图(1-4)所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image007.png[/img]
图(1-4)
这时在左侧报表设计区内添加一个表格,做如图(1-5)的设置
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image009.png[/img]
好了,这时所有的操作的完成,让我们看看他的显示效果吧:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image018.jpg[/img]
杰表设计器是一款功能非常强大的报表设计器,他除了支持jdbc、csv、javabean及xml数据集外,还对hibernate进行了扩充,如果你的系统用了hibernate那么你将可以直接用杰表设计器引用你的hibernate制作报表,详情请登录http://www.jatools.com查阅。联系方式:QQ-332400035 e-mail:505bai@163.com