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 ...
随机推荐
- 解决IE浏览器中出现“Resource interpreted as Document but transferred with MIME type application/json”问题
在上传图片时,使用ajax提交,返回的数据格式为json.在测试时发现IE浏览器中,上传图片后,没有显示图片,而是弹出一个提示:是否保存UploadImg.json文件:而在其他浏览器中正常. 在Ch ...
- Spring2集成iBatis2
从数据库中查询一条记录,演示Spring与iBatis的集成 1 编写sqlmaps与Domain对象 <?xml version="1.0" encoding=" ...
- 安装JDK以及配置Java运行环境
安装JDK以及配置Java运行环境 1.JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2 ...
- The UVALIVE 7716 二维区间第k小
The UVALIVE 7716 二维区间第k小 /** 题意:给一个n * n的矩阵,有q个查询 每次查询r,c,s,k表示已(r,c)为右上角 大小为s的正方形中 第k小的元素 n <= 2 ...
- babelrc配置
{ "presets": [ ["env", { // webapck2/3必须配置,放弃使用babel的模块化,使用webpack的模块化,webpack1不 ...
- Myeclipse中生成subscription code的代码
//代码如下: package com.qls.AddingMethodsToAnEnum; import java.io.*; public class MyEclipseGen { private ...
- Java面试题之类的静态代码块和静态属性等的加载顺序
如以下面试题: /** * @author hjs * @date 2019/3/62:41 * @Dec */public class B { public static B t1 = new B( ...
- Python学习笔记(Django篇)——2、创建第一个django应用
在helloworld工程的基础上,我们准备创建第一个基于web的django应用,把这个应用名字命名为demo 首先,是如何创建这个应用包,当然第一选择我们可以进入到cmd中,执行如下命令 py ...
- lesson 5
C#中的委托(delegate)与事件(event) 一.委托就是中间人的意思,c#中的委托允许将一个类中的方法传递给另一个能调用该方法的类的某个对象.程序员可以将A类的一个方法m(被包含在某个del ...
- 自己写的enum转换的一个扩展,
public static String ToEnumName(this int? source, Type e) { if (!source.HasValue) throw new Argument ...