Hibernate中一对一以及一对多之间的关系
来源:互联网 发布:js面向对象编程 编辑:程序博客网 时间:2024/05/30 22:58
一:一对一关系(数据库--mysql)
1)人和省份证:一个人只能拥有一个身份证,一张身份证也只属于一个人
一对一建表是通过外键来建立联系的
实现步骤:
1、在数据库中创建两张表一张用户表(User),一张省份证表(Card--不需要建立自动增长,建立主键就可以了,通过hibernate来建立关系)
2、建立实体类User.java,Card.java
3、为两张实体类关联起来
在User.java实体类中添加一个Card.java,并添加get、set方法
private Card card;
在Card.java实体类中添加一个User.java,并添加get、set方法
private User user;
4、写两个实体类的映射文件
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-11-3 19:26:44 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<!-- 一对一之用户映射 -->
<class name="com.entity.User" table="USER">
<id name="uid" type="int">
<column name="UID" />
<generator class="native" />
</id>
<property name="uname" type="java.lang.String">
<column name="UNAME" />
</property>
<!-- 一对一关系 -->
<one-to-one name="card" class="com.entity.Card" cascade="all-delete-orphan"></one-to-one>
</class>
</hibernate-mapping>
Card.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-11-3 19:26:44 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<!-- 一对一之省份证映射 -->
<class name="com.entity.Card" table="CARD">
<id name="uid" type="int">
<column name="UID" />
<!-- 建立外键 -->
<generator class="foreign" >
<param name="property">user</param>
</generator>
</id>
<property name="cnum" type="java.lang.String">
<column name="CNUM" />
</property>
<!-- 一对一关系 -->
<one-to-one name="user" class="com.entity.User" ></one-to-one>
</class>
</hibernate-mapping>
5、在配置文件中加入两个映射文件
<!-- 配置一对多的映射 -->
<mapping resource="com/entity/Sheng.hbm.xml"></mapping>
<mapping resource="com/entity/City.hbm.xml"></mapping>
6、你可以先在测试类中测试你的数据库连接以及数据是否能够与表有交互
二:一对多关系(数据库--mysql)
1)商品和类别:一个类里面可以有多个商品,但是一个商品只能属于一个类
一对多建表是通过外键来建立联系的
实现步骤:
1、在数据库中创建两张表一张类别表(category),一张商品表(product)
2、建立实体类Category.java,Product.java
3、为两张实体类关联起来
在Category.java实体类中set一个list,添加get和set方法。存储类别的商品。
private Set<Product> product=new HashSet<Product>();
在Product.java中表示所属的类别。添加get和set方法
private Category category;
4、写两个实体类的映射文件
Category.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-11-4 14:26:49 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.entity.Category" table="CATEGORY">
<id name="category_id" type="int">
<column name="CATEGORY_ID" />
<generator class="native" />
</id>
<property name="category_name" type="java.lang.String">
<column name="CATEGORY_NAME" />
</property>
<!--name是set集合的名称-->
<set name="product" table="PRODUCT" inverse="false" lazy="true" cascade="all-delete-orphan"><key> <!--外键>
<column name="CATEGORY_ID" />
</key>
<one-to-many class="com.entity.Product" /> <!--实体的全路径-->
</set>
</class>
</hibernate-mapping>
Product.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-11-4 14:26:49 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.entity.Product" table="PRODUCT">
<id name="product_no" type="int">
<column name="PRODUCT_NO" />
<generator class="native" />
</id>
<property name="product_name" type="java.lang.String">
<column name="PRODUCT_NAME" />
</property>
<property name="product_price" type="double">
<column name="PRODUCT_PRICE" />
</property>
<many-to-one name="category" class="com.entity.Category" fetch="join">
<column name="CATEGORY_ID" />
</many-to-one>
</class>
</hibernate-mapping>
5、在配置文件中加入两个映射文件
<!-- 配置一对多的映射 -->
<mapping resource="com/entity/Sheng.hbm.xml"></mapping>
<mapping resource="com/entity/City.hbm.xml"></mapping>
6、测试类
- Hibernate中一对一以及一对多之间的关系
- Hibernate 一对一,一对多关系
- Hibernate 关系配置(一对一,一对多)
- Hibernate中一对一,一对多,多对多的写法
- Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)
- grails的一对一、一对多关系
- Hibernate中一对多的映射关系
- hibernate中一对多关系的映射
- hibernate中一对多关系的映射
- hibernate中一对多关系的映射
- hibernate中一对多关系的映射
- hibernate中一对多关系的映射
- hibernate中一对多关系的映射
- Hibernate 基于注解的方式 实现的关系映射案例(一对一关系,一对多关系,多对多关系)
- Hibernate双向一对一,一对多,多对多关系映射
- Hibernate 关系映射 (一对一,一对多,多对多)
- hibernate关联关系配置(一对一,一对多,多对多)
- Hibernate关联关系配置(一对一,一对多,多对多)
- Android px、dp梳理
- Struts2 结果视图是另一个Action的情况的配置方式
- Dropout
- Go语言递归函数
- python接口测试之路Day1
- Hibernate中一对一以及一对多之间的关系
- CString.format 发现点问题
- Web应用扫描工具Wapiti
- 集合栈
- C语言的一些误用和知识总结
- C语言进阶-7讲: 递归经典:汉诺塔
- React native 热更新之CodePushy
- Mysql的Innodb存储引擎缓冲池个人理解
- 使用ES6+vue+elementui+webpack搭建简单项目