Hibernate学习笔记(3)---hibernate关联关系映射
一对一关联
1,通过主键关联(个人偏向另外一种)
<id name="userid" type="java.lang.Integer">
<column name="userid" />
<!-- 主键关联,将主键生成策略改为foreign,表明由关联类来生成主键,
即直接使用另外关联类的主键值,该实体类不能生成主键 -->
<generator class="foreign" />
<para name="property">address</para><!-- -->
</id>
<property name="name" type="java.lang.String">
<column name="name" length="12" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="16" />
</property>
<one-to-one name="address" class="Address" constrained="true"></one-to-one></span>
Addrss.hbm.xml文件配置
<id name="addressid" type="java.lang.Integer">
<column name="addressid" />
<generator class="identity" />
</id>
<property name="addressinfo" type="java.lang.String">
<column name="addressinfo" length="12" />
</property>
2通过外键关联
<!-- class属性:另外个实体类,将其的address属性映射为address表的外键address_id,
unique指定一对一映射
-->
<many-to-one name="address" class="Address" unique="true">
<!-- 外键 -->
<column name="address_id"></column>
</many-to-one>
一对多关联映射
private Set<Address> setAddress = new HashSet<Address>();
public Set<Address> getSetAddress() {
return setAddress;
}
public void setSetAddress(Set<Address> setAddress) {
this.setAddress = setAddress;
}
第二步:在Address.java表示一
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
<!--set集合名称 -->
<!--hibernate机制,双向维护外键 columen 外键名称-->
<key column="user_address"></key>
<one-to-many class="Address全路径"/>
</set>
第五步:在多的配置文件(Address.hbm.xml)配置一的一方
<!--name属性 写address.java表示的user-->
<many-to-one name="user" class="User全路径" column="外键名"></many-to-one>
多对多的关联映射
private Set<Role> setRole = new HashSet<Role>();
public Set<Role> getSetRole() {
return setRole;
}
public void setSetRole(Set<Role> setRole) {
this.setRole = setRole;
}
role.java表示user
private Set<User> setUser = new HashSet<User>();
public Set<User> getSetUser() {
return setUser;
}
public void setSetUser(Set<User> setUser) {
this.setUser = setUser;
}
<!--
name 角色set集合名称
table 第三张表的名称
-->
<set name="setRole" table="t_ub">
<!-- 配置当前映射文件在第三张表外键名称 -->
<key column="uid"></key>
<many-to-many class="路径" column="rid"></many-to-many>
</set>
role配置user
<!--
name 角色set集合名称
table 第三张表的名称
-->
<set name="setUser" table="t_ub">
<!-- 配置当前映射文件在第三张表外键名称 -->
<key column="bid"></key>
<many-to-many class="路径" column="uid"></many-to-many>
</set>
Hibernate学习笔记(3)---hibernate关联关系映射的更多相关文章
- hibernate学习笔记之四 Hibernate的增删改查
采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...
- Hibernate学习笔记(六) — Hibernate的二级缓存
我们知道hibernate的一级缓存是将数据缓存到了session中从而降低与数据库的交互.那么二级缓存呢? 一.应用场合 比方.在12306购票时.须要选择出发地与目的地,假设每点一次都与数据库交互 ...
- Hibernate学习笔记二:常用映射配置
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6760895.html 一:单向一对一 常用唯一外键的方法来配置单向一对一关系. 1:实体关系 类A中有类B对象 ...
- hibernate学习笔记之一 hibernate简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架 hibernate可以自动生成SQL语句,自 ...
- Hibernate学习笔记(二)
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...
- Hibernate学习笔记(一)
2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...
- Hibernate 学习笔记一
Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- JPA学习笔记(8)——映射一对多关联关系
一对多关联关系 本文有很多和多对一是一样的,因此不会写得非常具体. 有看不懂的.能够參考JPA学习笔记(7)--映射多对一关联关系 Order实体类 package com.jpa.helloworl ...
- Hibernate学习一:Hibernate注解CascadeType
http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hi ...
随机推荐
- Qwtpolar的编译
Qwtpolar是Qt的一个第三方扩展,用于绘制极坐标下的函数图形.官方网站在: http://sourceforge.net/projects/qwtpolar/ 新版的QGIS2.8依赖这个库,所 ...
- C++ queue deque
queue queue 队,一种先进先出的数据结构,c++ stl里也叫容器适配器,它是以deque 或list为基础的一种数据结构 queue的相关操作 queue<int deque< ...
- FiddlerCoreAPI开发(二)截获HTTPS流量
上一篇文章简单简单分析了fiddlercore自带样例的代码,本篇文章进入主题,介绍如何使用fiddlercore截获HTTPS流量. 当时学习完样例代码后,我觉得结合注释来抓HTTPS的包应该也很简 ...
- 两款主流项目管理软件PK,哪个更好用?
两款主流项目管理软件PK,哪个更好用? 一.产品介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领 ...
- Spring MVC如何测试Controller(使用springmvc mock测试)
在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过 ...
- MFC学习之CWinApp类
CWinApp是一个基类,你通过它来继承Windows应用程序对象.应用程序对象为你提供了初始化应用程序(以及它的每一个实例 和运行应用程序所需的成员函数.它实现主事件循环并把事件分发给MFC中其他类 ...
- C#:StreamReader读取.CSV文件(转换成DataTable)
using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// ...
- Aop介绍及几种实现方式
Aop介绍 我们先看一下wiki百科的介绍 Traditional software development focuses on decomposing systems into ...
- 小白的Python之路 PEP8 代码风格
转载自http://www.douban.com/note/134971609/ Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下 ...
- 挂载mount、卸载umount、挂载光盘U盘
mount [root@localhost ~]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) ...