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 ...
随机推荐
- tyvj4877 组合数
1.组合数 (zero.cpp/c/pas) 时间限制:1s 内存限制:256MB [问题描述] 从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合:从m个不 ...
- JavaSE&&JavaEE&&JavaME的区别【Java中常用的包结构】
一.javaEEJavaSEJavaME用的同一个jar包吗? javaEE JavaSE javaME 用的JDK是同一个,开发j2SE工程的话只要有JDK就可以了,开发J2EE工程和J2ME工程除 ...
- JavaScript必知的特性(继承)
多数人在学习JavaScript的时候.都是做Web的时候.须要表单验证.或者是一些简单的DOM操作,如同我上篇所讲.处在一个"辅助"的地位. 处在"辅助"地位 ...
- Linux转发性能评估与优化(转发瓶颈分析与解决方式)
线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...
- 如何处理使用js兼容所有浏览器的问题
首先:如何处理兼容问题 1.如果两个都是属性,用逻辑||做兼容 2.如果有一个是方法,用三元做兼容 3.如果是多个属性或方法,封装函数做兼容 分享两个小知识点: 1.取消拖拽的默认行为: docume ...
- 快速序列化组件MessagePack介绍
简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有 ...
- VS2010灵活运用快捷操作功能(总结)
转载于:http://blog.csdn.net/trassion/article/details/7667814 1.快速using(这个的快捷键是ctrl+.) 2.快速回到之前编辑的代码页面现在 ...
- 体验mssql-cli
1. 背景 安装SQL Server on Linux之后,在命令行下使用sqlcmd,你会发现代码提示,语法高亮,甚至连多行复制都不支持,相比之下,MySQL的命令行客户端还好用多了.只做简单的命令 ...
- Java Web Session设置
一.前言 在做 java web项目时,我们很多时候都要用到 Session,那么我就简单的写一下 Session 的写法. 二.代码实现 Servlet Session 的设置 package co ...
- ios 访问隐私信息 info.plist 中的字段
1.iOS10相册相机闪退bug: iOS10系统下调用系统相册,相机功能,遇到闪退的情况,描述如下: This app has crashed because it attempted to acc ...