Hibernate的关系配置
一对一: <hibernate-mapping>
<class name="cn.jnit.bean.User" table="T_user">
<cache usage="read-write"/> --二级缓存
<id name="id">
<generator class="sequence">
</generator>
</id>
<property name="pwd"></property>
<property name="name"></property>
<one-to-one name="ud" class="cn.jnit.bean.UserDetail" property-ref="user" cascade="all" ></one-to-one>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.jnit.bean.UserDetail" table="t_ud">
<cache usage="read-write"/>
<id name="id">
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
<property name="address"></property>
<property name="phone"></property>
<one-to-one name="user" class="cn.jnit.bean.User" cascade="all"></one-to-one>
</class>
</hibernate-mapping>
*******************************************************************
一对多和多对一:
一对多
<hibernate-mapping>
<class name="cn.jbit.bean.Dept" table="DEPT">
<cache usage="read-write" />
<id name="deptno"> <generator class="sequence"></generator> </id>
<property name="dname"></property>
<property name="loc"></property>
<set name="emps" cascade="save-update" inverse="true" order-by="empno desc" lazy="false">
<cache usage="read-only" />
<key column="deptno"></key>
<one-to-many class="cn.jbit.bean.Emp" />
</set>
</class>
</hibernate-mapping>
多对一:
<hibernate-mapping>
<class name="cn.jbit.bean.Emp" table="Emp" lazy="false"> <cache usage="read-only" />
<id name="empno"> <generator class="sequence"></generator> </id>
<property name="ename"></property>
<property name="job"></property>
<property name="mgr"></property>
<property name="hiredate"></property>
<property name="sal"></property>
<property name="comm"></property>
<many-to-one name="dept" column="deptno" class="cn.jbit.bean.Dept" cascade="save-update">
</many-to-one>
</class>
</hibernate-mapping>
*******************************************************************************
多对多:
<hibernate-mapping>
<class name="cn.jbit.bean.Empl" table="T_Empl">
<id name="id"> <generator class="sequence"></generator> </id>
<property name="pname"></property>
<set name="projects" table="Project_Empl" cascade="save-update">
<key column="eid"></key>
<many-to-many class="cn.jbit.bean.Project" column="pid"></many-to-many>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="cn.jbit.bean.Project" table="T_PROJECT">
<id name="id"> <generator class="sequence"></generator> </id>
<property name="pname"></property>
<property name="pflag" type="java.lang.Boolean" ></property>
<set name="empls" table="Project_Empl" cascade="save-update">
<key column="pid"></key>
<many-to-many class="cn.jbit.bean.Empl" column="eid"></many-to-many>
</set>
</class>
</hibernate-mapping>
两个一对多: 职员表和奖励表通过第三张表:职员奖励表关联,三个实体类
public class Emp { private Integer id; private String name; private Set<EmpPri> empPris=new HashSet<EmpPri>(); }
public class Prize { private Integer id; private String type; private String comment; private Set<EmpPri> empPris = new HashSet<EmpPri>(); }
public class EmpPri { private Integer id; private String year; private Emp emp; private Prize pri; }
Emp.hbm.xml:
<hibernate-mapping>
<class name="cn.jnti.bean.Emp" table="Emp">
<id name="id"> <generator class="sequence"></generator> </id>
<property name="name"></property>
<set name="empPris" cascade="save-update">
<key column="eid"></key>
<one-to-many class="cn.jnti.bean.EmpPri"/>
</set>
</class>
</hibernate-mapping>
Prize.hbm.xml:
<hibernate-mapping>
<class name="cn.jnti.bean.Prize" table="Prize">
<id name="id"> <generator class="sequence"></generator> </id>
<property name="type"></property>
<property name="comment" column="P_comment"></property>
<set name="empPris" cascade="save-update">
<key column="pid"></key>
<one-to-many class="cn.jnti.bean.EmpPri"/>
</set>
</class>
</hibernate-mapping>
EmpPri.hbm.xml:
<hibernate-mapping>
<class name="cn.jnti.bean.EmpPri" table="Emp_Pri">
<id name="id"> <generator class="sequence"></generator> </id>
<property name="year"></property>
<many-to-one name="emp" column="eid" class="cn.jnti.bean.Emp" cascade="save-update"></many-to-one>
<many-to-one name="pri" column="pid" class="cn.jnti.bean.Prize" cascade="save-update"></many-to-one>
</class>
</hibernate-mapping>
Hibernate的关系配置的更多相关文章
- Hibernate 关系配置
表之间关系 1. 一对多 一个部门有多个员工,一个员工只能属于某一个部门 一个班级有多个学生,一个学生只能属于一个班级 2. 多对多 一个老师教多个学生,一个学生可以被多个老师教 一个学生可以先择多门 ...
- hibernate多对多关系配置
一.创建用户,角色实体类. 一名用户可以有多个角色.一个角色可以对于多名用户. 用户实体类 public class User { private int uId; private String uN ...
- hibernate(3) —— 关系映射
hibernate中关系映射指的是实体类与实体类间的关系.和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系. 一:一对一映射 两个对象之间是一对一的关系,如人和身份证之间是 ...
- hibernate对象关系实现(一)一对多
hibernate是对jdk一个封装工具,实现对象和数据库之间数据映射.使用时涉及到四个问题:a.对象之间的关系在类中的体现:b,对象关系对应的数据库中表之间体现:c.实现a,b在hibernate的 ...
- hibernate进阶--一对多映射配置
hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码 ...
- hibernate的基本配置
1 Hibernate是一个非侵入式的ORMapping的框架. 2 Hibernate是一个能够将JAVA对象 通过 映射关系 映射到 关系型数据库的 这样一个框架 Hib ...
- hibernate框架入门配置
1.新建一个项目(可以是java项目,也可以是webapp) 2.导入jar包,包括日志,mysql驱动,必备request包,jpa配置规范包 3.创建实体类 1.创建数据库,使用hibernate ...
- Hibernate注解关系映射
Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid) 1)一对一外键关联映射(单向) @O ...
- Hibernate表关系映射之多对多映射
一.多对多的实现原理 在数据库中实现多对多的关系,必须使用连接表.也就是用一个独立的表来存入两个表的主键字段,通过遍历这张表来获取两表的关联关系. 而在我们的对象中,多对多是通过两者对象类中互相建立对 ...
随机推荐
- Bootstrap 辅组类和响应式工具
1.情景文本颜色 //各种色调的字体 <p class="text-muted">Bootstrap 视频教程</p> <p class=" ...
- WGZX:javaScript 学习心得--1
标签: javascriptiframedreamweaver浏览器htmltable 2008-09-11 10:50 1071人阅读 评论(0) 收藏 举报 分类: UI(21) 1,docu ...
- JDK核心包学习
StringBuffer 线程安全.可变字符序列 StringBuilder 非线程安全.可变字符序列,比StringBuffer更快 Boolean 使用valueOf产生Boolean实例 ...
- c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)
C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...
- 设计模式:桥连模式(Bridge)
定 义:将抽象部分和它的实现部分分离,使它们可以独立的变化. 结构图: 实现类: //Implementor(实现)类 public abstract class Implementor { pu ...
- django session
上周一个新的应用场景,带出来了关于django session管理的问题. 公司的另一个App以Widget的形式嵌入我们的页面,就是我们提供一些url,另一个App通过iframe的形式嵌入这些ur ...
- The Bip Buffer - The Circular Buffer with a Twist
Introduction The Bip-Buffer is like a circular buffer, but slightly different. Instead of keeping on ...
- 【C++】虚函数
I 动态绑定.多态.虚函数.对象的静态类型与动态类型 1.基类中有两种函数: 派生类直接继承不做改变 派生类重新定义成适合自身的版本覆盖掉基类的函数 对于第一种就是普通的基类成员函数,第二种通常通过将 ...
- js判断手机访问web网站跳转到手机版
第一种:直接JS脚本 <script type="text/javascript">try {var urlhash = window.location.hash;if ...
- CDN的原理以及其中的一些技术
本质:DNS解析CNAME时最终会请求到阿里CDN的DNS服务器上,阿里CDN的DNS服务器会判断请求ip的物理区域是哪里,同时根据各CDN节点的压力做全局的负载均衡 返回合适CDN节点的ip. ht ...