Hibernate关联关系笔记

  • 单向N:1

    *  有连接表:在N方使用<join>/<many-to-one>。1方无需配置与之关联的持久化类。

    *  没有连接表:在N方使用<many-to-one>。1方无需配置与之关联的持久化类。

  • 单向1:N

    *  有连接表: 在1方使用<set>/<many-to-many>,在many-to-many中将unique属性设置为true。 N方无需配置与之关联的持久化类。

    *  没有连接表:在1方使用<set>/<one-to-many>。N方无需配置与之关联的持久化类。

    注:cascade属性在<set>上配置

  • 双向1:N

    *  有连接表:1方使用<set>/<many-to-many>并设置<many-to-many>的unique参数为true。N方使用<join>/<many-to-one>

    *  没有连接表:1方使用<set>/<one-to-many>。N方使用<many-to-one>

    注:只能在1的一方使用inverse放弃控制权,N的一方无法放弃控制权,因为没有inverse属性。

  • 单向N:N

    控制端使用<set>/<many-to-many>

  • 双向N:N

    两边都使用<set>/<many-to-many>

  • 单向1:1

    *  基于外键:控制端使用<many-to-one>,并设置<many-to-one>的unique属性为true。

    *  基于主键:控制端设置ID生成策略为foreign,并使用<one-to-one>标签。

    *  基于连接表:控制端使用<join>/<many-to-one>,并设置<many-to-one>的unique属性为true

  • 双向1:1

    *  基于外键:一方使用<many-to-one>并设置其unique参数为true。另一方使用<one-to-one>

    *  基于主键:一方设置ID生成策略为foreign,并使用<one-to-one>标签。另一方只使用<one-to-one>标签。

    *  基于连接表:两边都使用<join>/<many-to-one>。并都设置<join>下的<key>unique属性和<many-to-one>的unique属性为true。而且两边需要有一边设置inverse参数为true,即放弃控制权。

最新文章

  1. mediastreamer使用教程
  2. ecshop /includes/modules/payment/alipay.php SQL Injection Vul
  3. Bluez alpha版震撼发布!
  4. spring dataSourceRouter自动切换数据源
  5. 关于 I/O Wait
  6. expect远程登陆hw交换机--测试通过1
  7. Python中 os._exit() sys.exit() exit()区别
  8. Android WebView 软键盘挡住输入框
  9. Tomcat 服务器的端口号的修改
  10. java--ThreadPool线程池简单用法
  11. python中的数字
  12. js 添加事件 attachEvent 和 addEventListener 的区别
  13. servlet的执行过程
  14. QCA4028软件平台启用双WAN指导
  15. 微信开发之使用java获取签名signature(贴源码,附工程)
  16. 解决Apache Web Server的几个错误
  17. wordpress 无法发送邮件
  18. Python 字符串操作函数二
  19. Django之ORM使用以及模板语言
  20. Code Signal_练习题_shapeArea

热门文章

  1. 如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?
  2. MFC之进度条CProgressCtrl
  3. VS中批注的使用
  4. Effective C++阅读笔记_条款2:尽量以const,enum,inline替换#define
  5. Python~删除空格,插入换行符号
  6. apache通过cgi调用exe程序
  7. hdu 1501 Zipper
  8. NetApp 监控
  9. oracle 11g crs检测结果
  10. MVC 好记星不如烂笔头之 ---&gt; 页面压缩GIP