Inverse是hibernate双向关系中的基本概念。
inverse的真正作用就是指定由哪一方来维护之间的关联关系。
当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之间的关联关系,说白了就是hibernate如何生成Sql来维护关联的记录!

inverse=true    ->    由另一方维护关联关系
inverse=false    ->    由当前方维护关联关系

父亲中的关系映射 
 {set name="children" lazy="true" inverse="true"}
      {key column="parent_id"/}
      {one-to-many class="test.Child"/}
{/set}

儿子中关系映射 
{many-to-one name="parent" column="parent_id" not-null="true"/}

【1】Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重复更新。一般来说有一端要设为true。

【2】Cascade:负责控制关联对象的级联操作,包括更新、删除等,也就是说对一个对象进行更新、删除时,其它对象也受影响,比如我删除一个对象,那么跟它是多对一关系的对象也全部被删除。
举例说明区别:删除“一”那一端一个对象O的时候,如果“多”的那一端的Inverse设为true,则把“多”的那一端所有与O相关联的对象外键清空;如果“多”的那一端的Cascade设为Delete,则把“多”的那一端所有与O相关联的对象全部删除。

【3】Fetch:Hibernate抓取策略
1) fetch="select" 会另外发出一条语句查询集合
2) 设置 fetch="join" 采用外连接集合的 lazy 失效
3) 这只 fetch="subselect" 另外发出一条 select 语句抓取前面查询到的所有的实体对象的关联集合 fetch 只对 HQL 查询产生影响其他的则不会

【4】lazy 参数值常见有 false 和 true,Hibernate3 映射文件中默认lazy = true ;
在映射文件中,不同的组合会使用不同的查询:
1、lazy=true fetch = select ,使用延迟策略,开始只查询出主对象,关联对象不会查询,只有当用到的时候才会发出sql语句去查询 ;
2、lazy=false fetch = select ,没有用延迟策略,同时查询出主对象和关联对象,产生1+n条sql.
3、lazy=true或lazy=false fetch = join,延迟都不会作用,因为采用的是外连接查询,同时把主对象和关联对象都查询出来了.

最新文章

  1. 精彩 JavaScript 代码片段
  2. CSS3简单的栅格系统
  3. 数三角形 bzoj 1201
  4. JDK环境变量设置
  5. C# 微信v3退款
  6. Oracle 数据库基础学习 (四) group by的使用
  7. Java for LeetCode 145 Binary Tree Postorder Traversal
  8. ubnutu安装sougou 输入法
  9. zabbix 修改输出web前端图片的日期格式
  10. IOS中tableView每组的头部控件、通过tableView的代理方法控制某一行的cell能否达到高亮选中状态
  11. 第一节 Hibernate 基本配置
  12. C# List 泛型用法
  13. 用cflow工具生成代码函数调用关系
  14. 【转】mysql中文乱码的一点理解
  15. CentOS 6.5 通过命令行安装发送邮件
  16. VMware workstation创建虚拟机console图文
  17. windows7安装MySQL-python遇到的坑
  18. requirejs模块路径配置问题
  19. undefined symbol: ap_log_rerror;apache2.4与weblogic点so文件
  20. python-下载百度图片到本地

热门文章

  1. iOS学习11之OC继承
  2. python 代码片段23
  3. BZOJ1103[POI2007]大都市meg 题解
  4. Zepto Code Rush 2014 A. Feed with Candy
  5. @font-face制作Web Icon
  6. NOIP欢乐模拟赛 T1 解题报告
  7. 【BZOJ】2823: [AHOI2012]信号塔
  8. 【BZOJ】2697: 特技飞行
  9. AIX日常维护
  10. jquery插件之拖拽改变元素大小