hibernate.cfg.xml配置文件对关联关系的书写技巧!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.czk.oa.domain">
<class name="Department" table="department">
<id name="id" column="id">
<generator class="native"/>
</id>
<!--.... 其它内容 .... -->
</class>
</hibernate-mapping>
- 一、先写其它的普通属性。(如:type是基本数据类型的)
<hibernate-mapping package="cn.czk.oa.domain">
<class name="Department" table="department">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"> </property>
<property name="description" column="description" type="string"></property>
</class>
</hibernate-mapping>
- 二、 然后准备写有关联关系的属性的配置注释。
- 多对一的模板:
<many-to-one name="1" class="2" column="3"></many-to-one>
- 一对多的模板:
<set name="1">
<key column="2"></key>
<one-to-many class="3"/>
</set> - 多对多的模版:
<set name="" table="">
<key column=""></key>
<many-to-many class="" column=""></many-to-many>
</set> - 一对一的模版:
<one-to-one name="" class=""></one-to-one>
<!-- users属性,本类与User类的一对多关系 (一) -->
<set name="">
<key column=""></key>
<one-to-many class=""/>
</set>
<!-- parent属性,本类与Department(上级)的多对一的关系 (二)-->
<many-to-one name="" class="" column=""></many-to-one>
<!-- childrens属性,本类与Department(下级)的一对多的关系 (三)-->
<set name="">
<key column=""></key>
<one-to-many class=""/>
</set>
- 三、最后填空
如果是一对一的话,没有这个属性,所以不考虑。(因为一对一默认的就是双方的id)
如果是一对多或多对一的话,就要找到属于它们的双向关联.
(比如本例子的parent属性和childrens属性就是一对双向的关联关系.)
那么该如何写它们的column属性呢?
首先,我们可以根据表结构来理解,因为column代表的是表的字段.
我们可以拿一对多来入手讲解,在一对多的关联关系中,只有一个外键,而且该外键是放在"多方"的,
那么我们就可以知道,其实在一对多的关联关系中<key column=""></key> 的key代表是"多方"的外键,
所以,我们可以给column填入"name的值+‘Id’后缀"
如本例中的column="parentId".(然后在把一对多的column值复制到多对一中的column中)
如果是多对多的关联关系的话,比其它关联关系多了一个table属性和column属性,
其中table这个属性就是中间表的名称,一般是把两张表的名称结合在一起,而且关联双方的table属性要一致.不然的话就会创建出两个不同的中间表了.
其中<many-to-many colum="" class="">的column属性就是跟它的class名称+id后缀.
如:<many-to-many colum="userId" class="User"></many-to-many>
其中还有个column,也就是<key column=""></key>中的column.这个column直接用本类的名称+id后缀.
如:
<class name="Role" table="role">
<!-- ... 其它略 ... -->
<!-- users属性,本类与User类的多对多关系 -->
<set name="users" table="user_Role">
<key column="roleId"></key>
<many-to-many column="userId" class="User"></many-to-many>
</set>
</class>
hibernate.cfg.xml配置文件对关联关系的书写技巧!的更多相关文章
- hibernate.cfg.xml配置文件和hbm.xml配置文件
http://blog.sina.com.cn/s/blog_a7b8ab2801014m0e.html hibernate.cfg.xml配置文件格式 <?xml version=" ...
- hibernate.cfg.xml配置文件和hbm.xml配置文件 模板
hibernate.cfg.xml配置文件格式 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ...
- 给Eclipse中hibernate.cfg.xml配置文件加提示
在hibernate框架需要的jar包中找到hibernate3.jar,并用压缩软件打开,如图: 2 选择org文件夹--打开下一级文件夹 3 点击类型,方便找到dtd文件,下拉查看dtd文件,有两 ...
- Hibernate之通过hibernate.cfg.xml配置文件访问数据库的例子
hibernate.cfg.xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明
http://blog.csdn.net/centre10/article/details/6050466 来自于:http://blog.csdn.net/centre10/article/deta ...
- [Hibernate] hibernate.cfg.xml 配置文件的一些设置
<!-- 消除:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect. ...
- 1-2 hibernate主配置文件hibernate.cfg.xml详解
详 http://www.cnblogs.com/biehongli/p/6531575.html Hibernate的主配置文件hibernate.cfg.xml 1:Hibernate的主配置文件 ...
- 2.Hibernate的主配置文件hibernate.cfg.xml
1.配置 Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表.Hibernate 也需要一套相关数据库和其它相关参数的配置设置.所有这些信息通常是作 ...
- JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml
hibernate.cfg.xml配置文件——链接数据库 hibernate.cfg.xml一定要配置在/src文件目录下 --数据库驱动,url,用户名,密码 --方言org.hibernate.d ...
随机推荐
- svn merge详解
svn merge详解 [OK] http://blog.163.com/lgh_2002/blog/static/4401752620106202710487/ Subversion的分支通常用于在 ...
- Registering RHEL6 Clients into spacewalk
Before Starting(login to spacwalk server) 1.Create a base channel within Spacewalk (Channels > Ma ...
- es6+最佳入门实践(4)
4.函数扩展 4.1.参数默认值 默认参数就是当用户没有传值的时候函数内部默认使用的值,在es5中我们通过逻辑运算符||来实现 function Fn(a, b) { b = b || "n ...
- es6+最佳入门实践(3)
3.数组扩展 3.1.扩展运算符 扩展运算符用三个点(...)表示,从字面上理解,它的功能就是把数组扩展开来,具体形式如下: let arr = [1, 2, 3]; console.log(...a ...
- HDU2669 Romantic
Description The Sky is Sprite. The Birds is Fly in the Sky. The Wind is Wonderful. Blew Throw the Tr ...
- 封装一下webform的公用方法:对于软件我把这些全封装在pagebase里面,这样所有的页面只调用一句 Init()即可,其他的全在页面上配置
/// <summary> /// 绑定新闻列表,带分页与查询 /// </summary> /// <param n ...
- html 过滤器 c#
using System.Text.RegularExpressions; using System.Web; internal class HtmlHelper { /// <summ ...
- [bzoj1433][ZJOI2009]假期的宿舍——二分图
题目大意 传送门 题解 显然是二分图匹配. 用一些方法建图就好了. 要注意的是: 本题有多组数据!!! 初始化一定要注意!!! 代码 #include <bits/stdc++.h> us ...
- 28.Implement strStr()---kmp
题目链接:https://leetcode.com/problems/implement-strstr/description/ 题目大意:字符串匹配,从字符串中,找到给定字符串第一次出现的位置下标, ...
- 7.0不通过FileProvider解决调用相机给uri问题异常
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {//严格模式 StrictMode.VmPolicy.Builder builder = ...