以Department(部门类)和User(用户类)作为例子:
类图如下:
一般hibernate.cfg.xml的配置文件开头都是如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="cn.czk.oa.domain">
  6. <class name="Department" table="department">
  7. <id name="id" column="id">
  8. <generator class="native"/>
  9. </id>
  10. <!--.... 其它内容 .... -->
  11. </class>
  12. </hibernate-mapping>
 
只需要改变一下package=""包名,类名和对应的表名。
写完这些后,就可以准备写其它的普通属性和有关联关系的属性。
首先第一步:
  • 一、先写其它的普通属性。(如:type是基本数据类型的)
          如下面例子:
  1. <hibernate-mapping package="cn.czk.oa.domain">
  2. <class name="Department" table="department">
  3. <id name="id" column="id">
  4. <generator class="native"/>
  5. </id>
  6. <property name="name" column="name" type="string"> </property>
  7. <property name="description" column="description" type="string"></property>
  8. </class>
  9. </hibernate-mapping>
  • 二、 然后准备写有关联关系的属性的配置注释。
如:
在department.cfg.xml配置Department跟User的关联关系,还有自己的自关联的关系,那么先写出如下格式的注释:
[“什么”属性,本类与“什么类”的“什么关系”]
然后写出相应的关系模版,关于模板如下:
  1. 多对一的模板:

    1. <many-to-one name="1" class="2" column="3"></many-to-one>
  2. 一对多的模板:
    1. <set name="1">
    2. <key column="2"></key>
    3. <one-to-many class="3"/>
    4. </set>
  3. 多对多的模版:
    1. <set name="" table="">
    2. <key column=""></key>
    3. <many-to-many class="" column=""></many-to-many>
    4. </set>
  4. 一对一的模版:
    1. <one-to-one name="" class=""></one-to-one>
     
本例子:写出注释:
  1. <!-- users属性,本类与User类的一对多关系 (一) -->
  2. <set name="">
  3. <key column=""></key>
  4. <one-to-many class=""/>
  5. </set>
  6. <!-- parent属性,本类与Department(上级)的多对一的关系 (二)-->
  7. <many-to-one name="" class="" column=""></many-to-one>
  8. <!-- childrens属性,本类与Department(下级)的一对多的关系 (三)-->
  9. <set name="">
  10. <key column=""></key>
  11. <one-to-many class=""/>
  12. </set>
  • 三、最后填空
    [“什么”属性,本类与“什么类”的“什么关系”]    
根据上面注释模板来对配置进行填空。
填写name属性:其中不管什么关联关系的name属性都对应着第一个“什么”。
填写class属性: 不管什么关联关系的class属性都对应着第二个“什么”。
填写column属性:
  1. 如果是一对一的话,没有这个属性,所以不考虑。(因为一对一默认的就是双方的id
  2. 如果是一对多或多对一的话,就要找到属于它们的双向关联.
  3. (比如本例子的parent属性和childrens属性就是一对双向的关联关系.)
  4. 那么该如何写它们的column属性呢?
  5. 首先,我们可以根据表结构来理解,因为column代表的是表的字段.
  6. 我们可以拿一对多来入手讲解,在一对多的关联关系中,只有一个外键,而且该外键是放在"多方"的,
  7. 那么我们就可以知道,其实在一对多的关联关系中<key column=""></key> key代表是"多方"的外键,
  8. 所以,我们可以给column填入"name的值+‘Id’后缀"
  9. 如本例中的column="parentId".(然后在把一对多的column值复制到多对一中的column中)
  10. 如果是多对多的关联关系的话,比其它关联关系多了一个table属性和column属性,
  11. 其中table这个属性就是中间表的名称,一般是把两张表的名称结合在一起,而且关联双方的table属性要一致.不然的话就会创建出两个不同的中间表了.
  12. 其中<many-to-many colum="" class="">的column属性就是跟它的class名称+id后缀.
  13. 如:<many-to-many colum="userId" class="User"></many-to-many>
  14. 其中还有个column,也就是<key column=""></key>中的column.这个column直接用本类的名称+id后缀.
  15. 如:
  16. <class name="Role" table="role">
  17. <!-- ... 其它略 ... -->
  18. <!-- users属性,本类与User类的多对多关系 -->
  19. <set name="users" table="user_Role">
  20. <key column="roleId"></key>
  21. <many-to-many column="userId" class="User"></many-to-many>
  22. </set>
  23. </class>
 
                
                
 
 
 
 

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

  1. hibernate.cfg.xml配置文件和hbm.xml配置文件

    http://blog.sina.com.cn/s/blog_a7b8ab2801014m0e.html hibernate.cfg.xml配置文件格式 <?xml version=" ...

  2. hibernate.cfg.xml配置文件和hbm.xml配置文件 模板

    hibernate.cfg.xml配置文件格式 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ...

  3. 给Eclipse中hibernate.cfg.xml配置文件加提示

    在hibernate框架需要的jar包中找到hibernate3.jar,并用压缩软件打开,如图: 2 选择org文件夹--打开下一级文件夹 3 点击类型,方便找到dtd文件,下拉查看dtd文件,有两 ...

  4. Hibernate之通过hibernate.cfg.xml配置文件访问数据库的例子

    hibernate.cfg.xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  5. 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 ...

  6. [Hibernate] hibernate.cfg.xml 配置文件的一些设置

    <!-- 消除:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect. ...

  7. 1-2 hibernate主配置文件hibernate.cfg.xml详解

    详 http://www.cnblogs.com/biehongli/p/6531575.html Hibernate的主配置文件hibernate.cfg.xml 1:Hibernate的主配置文件 ...

  8. 2.Hibernate的主配置文件hibernate.cfg.xml

    1.配置 Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表.Hibernate 也需要一套相关数据库和其它相关参数的配置设置.所有这些信息通常是作 ...

  9. JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml

    hibernate.cfg.xml配置文件——链接数据库 hibernate.cfg.xml一定要配置在/src文件目录下 --数据库驱动,url,用户名,密码 --方言org.hibernate.d ...

随机推荐

  1. Codeforces 932.C Permutation Cycle

    C. Permutation Cycle time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  2. select函数详解

    网络编程中一个很重要的函数,没有整理,直接转过来,讲的还是蛮详细的. 转自:http://blog.csdn.net/zhw888888/archive/2009/03/29/4034515.aspx ...

  3. VMware DRS概述及功能

    通过动态分配和平衡计算资源,使您的 IT 基础架构与业务目标一致.VMware Distributed Resource Scheduler (DRS) 可持续监控所有资源池的利用率,并根据业务需求在 ...

  4. Lesson10 Fianl and fellings

    1)Revision History Date Issue Description Author 8/May/2015 1.0 Finish the WPF of our small game,sol ...

  5. Java Nio注意事项

    Selector  : public abstract class Selector extends Object SelectableChannel 对象的多路复用器. 可通过调用此类的 open ...

  6. 关于each()、find()、filter()遍历节点的操作方法

    关于each().find().filter()遍历节点的操作方法 each语法: each(fn)  ; 返回值:jQuery fn:代表对于每个匹配元素所要执行的函数 each()方法共有三种形式 ...

  7. urllib url解析学习

    #!/usr/bin/env python # encoding: utf-8 from urllib.parse import * #urlparse:解析url分段 #urlsplit:类似url ...

  8. centos编译安装vim并支持lua

    系统环境:centos6.5 x86 (basic server) 1.安装编译环境. # yum groupinstall "Development Tools" 2.安装vim ...

  9. PE文件从文件加载到内存,再从内存读取,然后存盘到文件

    // mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件 #include "stdafx.h" #include < ...

  10. c++ set容器排序准则

    转载两篇博客: http://blog.csdn.net/lishuhuakai/article/details/51404214 http://blog.csdn.net/lihao21/artic ...