Hibernate5.2关联关系之双向一对多(三)
Hibernate之双向一对多(三)
一.简介
本篇博文接着上一章的内容接着开展,代码也是在上篇博文的基础上修改。
二.hbm文件的方式
Customer.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="com.demo.hibernate.one2many.Customer" table="customer">
<id name="id" type="int">
<generator class="sequence">
<param name="sequence_name">cus_order_seq</param>
</generator>
</id>
<property name="name" type="string" column="name"></property>
<property name="phoneNum" type="string" column="phone_number"></property>
<!-- inverse表示由对方维护这种关联关系 -->
<set name="orderSet" inverse="true">
<key column="customer_id"></key>
<one-to-many class="com.demo.hibernate.one2many.Order"/>
</set>
</class>
</hibernate-mapping>
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="com.demo.hibernate.one2many.Order" table="orders">
<id name="id" type="int">
<generator class="sequence">
<param name="sequence_name">cus_order_seq</param>
</generator>
</id>
<property name="orderId" column="order_id" type="string"></property>
<property name="createTime" column="create_time" type="timestamp"></property>
<many-to-one name="customer" class="com.demo.hibernate.one2many.Customer" column="customer_id"></many-to-one>
</class>
</hibernate-mapping>
三.注解的方式
Customer.java
@Entity
@Table(name="customer")
public class Customer {
@Id
@Column(name="id")
@SequenceGenerator(name="sequenceGenerator", sequenceName="cus_order_seq", allocationSize=1)
@GeneratedValue(generator="sequenceGenerator", strategy=GenerationType.SEQUENCE)
private int id; @Column(name="name")
private String name; @Column(name="phone_number")
private String phoneNum; @OneToMany(fetch=FetchType.LAZY, mappedBy="customer")
private Set<Order> orderSet; //setter and getter
}
Order.java
@Entity
@Table(name="orders")
public class Order {
@Id
@Column(name="id")
@SequenceGenerator(name="sequenceGenerator", sequenceName="cus_order_seq", allocationSize=1)
@GeneratedValue(generator="sequenceGenerator", strategy=GenerationType.SEQUENCE)
private int id; @Column(name="order_id")
private String orderId; @Column(name="create_time")
@Type(type="timestamp")
private Date createTime; @ManyToOne(fetch=FetchType.LAZY)
private Customer customer; //setter and getter
}
四.测试代码
A.保存
@Test
public void save(){
Transaction tx = session.beginTransaction();
Customer customer = new Customer();
customer.setName("AAAAA");
customer.setPhoneNum("334411"); Order order = new Order();
order.setCreateTime(new Date());
order.setOrderId("A"); Order order1 = new Order();
order1.setCreateTime(new Date());
order1.setOrderId("B"); Set<Order> orderSet = new HashSet<Order>();
orderSet.add(order);
orderSet.add(order1); session.save(customer);
session.save(order);
session.save(order1);
tx.commit();
}
Hibernate5.2关联关系之双向一对多(三)的更多相关文章
- Hibernate5.2关联关系之单向一对多(一)
Hibernate5.2之单向一对多 一. 简介 Hibernate中最复杂的应该就是各种关联(单向一对多.单向多对一.双向一对多.一对一.多对多)关系的映射,于是笔者就想着去写一些关于Hibe ...
- 8、双向一对多的关联关系(等同于双向多对一。1的一方有对n的一方的集合的引用,同时n的一方有对1的一方的引用)
双向一对多关联关系 “双向一对多关联关系”等同于“双向多对一关联关系”:1的一方有对n的一方的集合的引用,同时n的一方有对1的一方的引用. 还是用客户Customer和订单Order来解释: “一对多 ...
- JPA学习笔记(8)——映射双向一对多关联关系
双向一对多关联关系 前面的博客讲的都是单向的,而本问讲的是双向的(双向一对多 = 双向多对一) 什么是双向? 我们来对照一下单向和双向 单向/双向 User实体类中是否有List< Order& ...
- Mybatis框架中实现双向一对多关系映射
学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...
- Hibernate关联映射(单项多对一和一对多、双向一对多)
最近总是接触着新的知识点来扩展自己的知识面:不停的让自己在原地接触天空的感觉真的很美好!!!革命没有成功,程序员的我们怎么能不努力呢...... 一.用员工和部门来剖析关联映射的原理. 1)从这张截图 ...
- Hibernate 双向一对多的关联映射
双向的一对多的关联关系是单项的一对多和单项的多对一的情况下产生的. 1.设计表结构 虽然关联关系变为双向的一对多,但是我们表结构不会发生改变,只是指向变了. 2.创建student对象 3.创建Gra ...
- hibernate中配置单向多对一关联,和双向一对多,双向多对多
什么是一对多,多对一? 一对多,比如你去找一个父亲的所有孩子,孩子可能有两个,三个甚至四个孩子. 这就是一对多 父亲是1 孩子是多 多对一,比如你到了两个孩子,它们都是有一个共同的父亲. 此时孩子就是 ...
- 测试开发专题:spring-boot如何使用JPA进行双向一对多配置
本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置. 依赖准备 要在spring-boot使用jpa需要在项目中有进入相关的依赖,pom文件里加入下面内容 & ...
- hibernate 自生双向一对多 多对一管理 (树)
<span style="font-size: large;">package com.javacrazyer.test; import java.io.Seriali ...
随机推荐
- 如何将C#类库做成COM
在类库项目的属性中, 选择生成, 最下方的"为COM的互操作注册"进行勾选, 并且将项目的Properties中, AssemblyInfo.cs中的[assembly: ComV ...
- gnuplot安装的小问题
今天在学习NS2的过程中接触到了awk和gnuplot来分析延迟,丢包等情况. gnuplot是一款非常精巧的绘图工具,使用方法也很简单,功能却很强大. 安装还是通过终端: sudo apt-get ...
- SVN的部署及分支等方法
1.本地Repository的创建 repository的创建很简单,假设我要在D:\TortoiseSVN\TestRepository目录中创建repository,只需 右键TestReposi ...
- [GodLove]Wine93 Tarining Round #7
比赛链接: http://vjudge.net/contest/view.action?cid=47643#overview 比赛来源: 2012 ACM/ICPC Asia Regional Han ...
- destoon二次开发 操作数据库可运行示例
<?phpdefine('IN_DESTOON', true);$userid= $_REQUEST["userid"];//$basepath=$_SERVER['PHP_ ...
- C#多线程线程
“线程同步”的含义 当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行“线程同步(thread synchro ...
- MSP430 IO 使用
MSP430内部上拉下拉使用注意——IO口测高低电平 MSP430单片机IO口用来检测高低电平时,是不需要外部上拉下拉的,因为其内部有上拉和下拉.在用作高低电平检测时,需要开启上拉或下拉. ...
- 动态规划VS分治策略
•在用分治法解决问题时,由于子问题的数目往往是问题规模的指数函数,因此对时间的消耗太大. •动态规划的思想在于,如果各个子问题不是独立的,不同的子问题的个数只是多项式量级,而我们能够保存已经解决的子问 ...
- 分布式事务(一)两阶段提交及JTA
原创文章,同步发自作者个人博客 http://www.jasongj.com/big_data/two_phase_commit/ 分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库(或 ...
- 【转】构建C1000K的服务器(1) – 基础
原文来自 ideawu 构建C1000K的服务器(1) – 基础 著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经不是问题了, 任何一个普 ...