hibernate mapping文件中的标记详解:关系标记

本文详细解析了Hibernate映射文件中用于建立表与表之间关系的标记,包括one-to-one、many-to-one、set+one-to-many以及set+many-to-many。这些关系标记并不直接影响数据库中的表关系,但在配置文件中定义的关系会影响对象的持久化行为。例如,通过one-to-one和many-to-one标记可以设置一对一对多的关系,而many-to-many则需要一个中间表来维护关系。每个关系标记对应一个属性,表示表间关系而非字段,并且关系的建立是单向的,不影响其他映射文件中的关系定义。
摘要由CSDN通过智能技术生成
代码
  1. 2.另一类常见的标记是建立表与表之间的关系。这类标记暂叫“关系标记”  
  2.   
  3. 2.0 “关系标记”有: one-to-one, many-to-one,  
  4.                   set+one-to-many, set+many-to-many  
  5.   
  6. 2.1 hibernate mapping中建立的表与表之间的关系和数据库中表与表之间的关系无任何瓜葛,互无影响。  
  7.     前者暂叫“cfg表关系”或“config 表关系”, 或者叫“db表关系”或“database 表关系”  
  8.     不过,cfg表关系常常参照db表关系来建立。  
  9.       
  10. 2.2 一个关系标记对应一个属性,但该属性表达“表与表的关系”,而不与字段对应。这类属性暂叫“关系属性”  
  11.     (1)这就表示更新本表的字段时,不考虑这些关系属性;  
  12.     (2)更新本表的同时,也可能要同时更新关系表,这时关系属性起作用。  
  13.       
  14. 2.3 准则:"cfg表关系"没有相互性。  
  15.     表mainTable 和 表relationTable,   
  16.     在mainTable的mapping文件中建立与relationTable的many-to-one的"cfg表关系" 。  
  17.     这不表示relationTable与mainTable有one-to-many的"cfg表关系"  
  18.     对relationTable的pojo对象进行数据库操作完全不受这个"cfg表关系"影响,就像没有这个关系一样。  
  19.     对mainTable的pojo对象进行数据库操作,可能会根据这个"cfg表关系"更新mainTable表和relationTable表  
  20.       
  21.     这点与"db表关系"不同,比如在mainTable中建立了一个指向relationTable的foreign key,   
  22.     那么往mainTable中插入一个foreign key 不存在的记录是不容许的,  
  23.        从 relationTable中删除一条记录,而这条记录mainTable中有记录关联它,那么删除会 导 致 异常。  
  24.       
  25.     这条准则很重要。  
  26.     这表示一个mapping文件中建立的"cfg表关系"不会影响其它mapping文件中的"cfg表关系",  
  27.       ,反过来,它也不受其它mapping文件中的"cfg表关系"的影响。  
  28.     这意味着一条"cf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值