返回介绍

双向 1-N 关联

发布于 2025-01-04 01:27:28 字数 1008 浏览 0 评论 0 收藏 0

对于 1-N 关联,Hibernate 推荐使用双向关联,而且不要让 1 的一端控制关联关系,而使用 N 的一端控制关联关系。

双向的 N-1 关联与 1-N 关联是完全相同的两种情形。两端都需要增加对关联属性的访问,N 的一端增加引用到关联实体的属性,1 的一端增加集合属性,集合元素为关联实体。

域模型

从 Order 到 Customer 的多对一双向关联需要在 Order 类中定义一个 Customer 属性,而在 Customer 类中需定义存放 Order 对象的集合属性

图 1

关系数据模型

ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的主键

图 2

Notice

当 Session 从数据库中加载 Java 集合时,创建的是 Hibernate 内置集合类的实例,因此,在持久化类中定义集合属性时,必须把属性声明为 Java 接口

  • Hibernate 的内置集合类具有集合代理功能,支持延迟检索策略
  • 事实上,Hibernate 的内置集合类封装了 JDK 中的集合类,这使得 Hibernate 能够对缓存中的集合对象进行脏检查,按照集合对象的状态来同步更新数据库。

在定义集合属性时,通常把它初始化为集合实现类的一个实例,这样可以提高程序的健壮性,避免应用程序访问取值为 null 的集合的方法。

例如: private Set<Order> orders = new HashSet<Order>();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文