1.本次博客的内容是使用Hibernate设计通用接口实现对Java对象进行增查改删(CRUD)的工作;主要目的如下:
掌握Hibernate的主要接口使用;
掌握设计持久化接口的基本方法;
熟悉提高Hibernate使用性能的方法;
2.系统概述如下:
本系统可以理解为一个产品的供应链描述系统,由供应商、厂商、客户、订单组成。映射关系描述如下图所示
图1 系统之间的映射关系
3.项目目录截图如下:
4.主要代码实现如下:
(1)business.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表结构的映射 -->
<class name="domain.business" table="business"><!-- 包名 数据库表名 -->
<!-- 配置id
见到name属性,JavaBean的属性 (domain的属性)
见到column属性,是表结构的字段
-->
<id name="id" column="id"> <!-- 只有主键是 id 剩下的写property
主键的生成策略 -->
<generator class="native"/>
</id>
<!-- 配置其他的属性 -->
<property name="CorporateName" column="CorporateName"/>
<set name="user">
<key column="bid"/>
<one-to-many class="domain.User"/>
</set>
</class>
</hibernate-mapping>
(2)/Order.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表结构的映射 -->
<class name="domain.order" table="order"><!-- 包名 数据库表名 -->
<!-- 配置id
见到name属性,JavaBean的属性 (domain的属性)
见到column属性,是表结构的字段
-->
<id name="id" column="id"> <!-- 只有主键是 id 剩下的写property
主键的生成策略 -->
<generator class="native"/>
</id>
<!-- 配置其他的属性 -->
<property name="address" column="address"/>
<property name="price" column="price"/>
<!-- 多对一关系 -->
<many-to-one name="user" class="domain.User" column="uid">
</many-to-one>
</class>
</hibernate-mapping>
(3)Source.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表结构的映射 -->
<class name="domain.Source" table="source"><!-- 包名 数据库表名 -->
<!-- 配置id
见到name属性,JavaBean的属性 (domain的属性)
见到column属性,是表结构的字段
-->
<id name="id"> <!-- 只有主键是 id 剩下的写property
主键的生成策略 -->
<generator class="foreign">
<param name="property"> user </param>
<!--上面那句的作用 -->
</generator>
</id>
<!-- 配置其他的属性 -->
<property name="sourceName" column="username"/>
<one-to-one name="user" constrained="true"/>
</class>
</hibernate-mapping>
(4)User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置类和表结构的映射 -->
<class name="domain.User" table="user"><!-- 包名 数据库表名 -->
<!-- 配置id
见到name属性,JavaBean的属性 (domain的属性)
见到column属性,是表结构的字段
-->
<id name="id" column="id"> <!-- 只有主键是 id 剩下的写property
主键的生成策略 -->
<generator class="native"/>
</id>
<!-- 配置其他的属性 -->
<property name="username" column="username"/>
<!-- 一对多 -->
<set name="messages">
<key column="uid"/>
<one-to-many class="domain.message"/>
</set>
<!-- 多对一关系 -->
<many-to-one name="business" class="domain.business" column="bid">
</many-to-one>
</class>
</hibernate-mapping>