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 ...
随机推荐
- 倒水问题 (FillUVa 10603) 隐式图
题意:本题的题意是给你三个杯子,第一二个杯子是空的,第三个杯子装满水,要求是量出一定容量d升的水.若是得不到d升的水,那就让某一个杯子里面的水达到d',使得d'尽量接近d升. 解题思路:本题是给出初始 ...
- 二叉树的递归遍历 The Falling Leaves UVa 699
题意:对于每一棵树,每一个结点都有它的水平位置,左子结点在根节点的水平位置-1,右子节点在根节点的位置+1,从左至右输出每个水平位置的节点之和 解题思路:由于上题所示的遍历方式如同二叉树的前序遍历,与 ...
- Cocos2d3.0 制作PList文件
auto root = Dictionary::create(); auto string = String::create("string element value"); ro ...
- uva--10700
题意: 输入一串仅仅含有+和*号的表达式,能够通过加入括号来改变表达式的值,求表达式的最大最小值. 思路: 表达式中的数都是不大于20的正整数,由a*b+c<=a*(b+c)能够知道.先算乘法后 ...
- ITM事件直接接收并解析
之前在实施一个监控项目时.客户由于买了IBM的小机.当前就赠送了TIVOLI的系统监控软件一套,客户也在他们的生产环境中部署了ITM的监控.由于没有购买IBM的netcool,无法集中管理告警事件,请 ...
- Android Library projetcts cannot be exported.
记一次比較无语的犯错,前几天我在紧急打包一个apk的时候.遇到了这样一个异常:Android Library projetcts cannot be exported. 异常提示截图例如以下: wat ...
- 在无人值守程序(服务)中调用Microsoft Graph
作者:陈希章 发表于 2017年5月31日 什么是无人值守程序(服务) 我在此前用了几篇文章分别介绍了在桌面应用程序(控制台),Web应用程序(ASP.NET MVC),以及PowerSehll脚本中 ...
- python自动化--字符串和整数的转换,while的循环体
字符串(str)和整数(int)类型变量的结合 *遵循只有同一类型的变量才可以结合. *不同类型的变量之间的转换 实例:实现打印出"192.168.100"和1的结合出" ...
- Jquery 改变样式
Jquery简单的操作 Jquery 是一个非常好用JS库,有很多的特殊的操作,为了方便,我们都可以引入Jquery. <script src="dist/js/vendor/jque ...
- spring-boot学习笔记之Conditional
今天看了@Conditional,自己根据以下文章练了下,根据自己的理解操作的 转载出处:http://wiselyman.iteye.com/blog/2213054 17. ...