之前都是用工具逆向生成代码,很少写配置文件,今天试着使用,有几点需要注意

Cascade(级联):
  Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系。

 Cascade属性的可能值有:

  all: 所有情况下均进行关联操作,即save-update和delete。

  none: 所有情况下均不进行关联操作。这是默认值。

  save-update: 在执行save/update/saveOrUpdate时进行关联操作。

  delete: 在执行delete 时进行关联操作。

  all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此book即成为孤儿节点。

 inverse(控制方向反转):
     一对多:该属性在多的一方。应该在一方的设置 inverse=true ,多的一方设置 inverse=false(多的一方也可以不设置inverse属性,因为默认值是false),这说明关联关系由多的一方来维护。原因:该关联关系的属性在多的一方的表中,在维护关联关系的时候在多的一方容易维护。
  多对多:属性在独立表中。在任意一方设置inverse=true,另一方inverse=false;原因:如果两个多设置为true 的话,表示两方都对关联关系表(独立表)进行了同样的维护,其实只要一方维护就行了,效率上来说,这样设置是合理点的。
  一对一:其实是一对多的一个特例,inverse 的设置也是一样的,主要还是看关联关系的属性在哪一方,这一方的inverse=false。
  多对一:也就是一对多的反过来,没什么区别。

模板:
    如在同包中 class 可以不写全限定名。(<hibernate-mapping package="包名">)
    
    多对一:column 推荐填写 属性名+Id 如 userId
    一对多:key column 拷贝 多对一 的column
    多对多:key column 本对象名+Id,class 推荐填写 关联对象名 + Id
    
    多对一
        <many-to-one name="属性名" class="对方的类名" column="..."></many-to-one>
        在表中:column 内所装的内容,只可能是 class 中对方表的 Id 值,并且在表中会创建 column 列;
        
    一对多
        <set name="属性名">
            <key column=" 多对一 的column "></key>
            <one-to-many class="关联对象名+Id"/>
        </set>
        name 为类中所使用的字段,表中不会创建列,
        之前在纠结,为什么 key column 需要填写,
            多对一 是为了让子表的 column 字段添加内容时,查找添加内容是否是主表的 Id 之一,也就是确认添加内容是否合法。
            而 一对多 的 key column 是为了在使用中添加内容时,自动在子表 column 加入当前类的 主键。
        
    多对多(肯定会有一张中间表):
        <set name="属性名" table="中间表名">
            <key column="本对象名+Id"></key>
            <many-to-many class="关联对象名+Id" column="在表中对应的列名"></many-to-many>
        </set>
        中间表名推荐使用 两表结合名 如:user_department ;

以上为个人理解,如有错误请通知我,谢谢

最新文章

  1. Backbone源码解析(四):View(视图)模块
  2. 5、利用控件TVCLZip和TIdFTP压缩文件并上传到FTP的线程单元pas 改进版
  3. JAVA学习中Swing概述中的JFrame学习
  4. 百度地图LBS开放平台AK一直没有用
  5. Oracle Pl/SQL编程基础
  6. IC芯片設計
  7. sails 相关文章
  8. 【MSP是什么】MSP认证之项目群管理
  9. Spring自学教程-介绍、特点、框架(一)
  10. 从零搭建 webpack3 环境 #1 - 安装使用
  11. oracle 常用索引分析,使用原则和注意事项
  12. 程序员50题(JS版本)(一)
  13. 问题处理:Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
  14. power designer 从sqlserver数据库获取字段说明&amp;导出rtf文档模板
  15. PAT 1132 Cut Integer[简单]
  16. ArcGIS(批量)删除属性字段
  17. 网页采集利器 phpQuery
  18. SELinux 引起的 Docker 启动失败
  19. [Android Pro] Android中全局Application的onCreate多次调用问题
  20. 我的Go语言学习之旅二:入门初体验 Hello World

热门文章

  1. 一图看懂hadoop分布式文件存储系统HDFS工作原理
  2. 20190305-leetcode题目有效的括号
  3. C语言进阶——基本数据类型01
  4. Python系列之 迭代器和生成器
  5. 20155302 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
  6. 20155310 2016-2017-2 《Java程序设计》第四周学习总结
  7. addClass+siblings+removeClass用意:
  8. 【Excel函数】如何在excle区分一列数字是否连续
  9. avaweb(三十二)——JDBC学习入门
  10. Android 测试 之MonkeyRunner