返回介绍

Demo

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

实体对象

public class Customer {
    private Integer customerId;
    private String customerName;
    private Set<Order> orders = new HashSet<Order>();
    //省去 get 和 set
}
public class Order {
    private Integer orderId;
    private String orderName;
    private Customer customer;
//省去 get 和 set
}

Customer.hbm.xml

<hibernate-mapping package="com.lihui.hibernate.double_n_1">
    <class name="Customer" table="CUSTOMERS">
        <id name="customerId" type="java.lang.Integer">
            <column name="CUSTOMER_ID" />
            <generator class="native" />
        </id>
        <property name="customerName" type="java.lang.String">
            <column name="CUSTOMER_NAME" />
        </property>
        <set name="orders"  inverse="true">
            <key column="CUSTOMER_ID"></key>
            <one-to-many class="Order"/>
        </set>
    </class>
</hibernate-mapping>

set

name 属性: 设定待映射的持久化类的属性的

inverse 属性:

  • 在 hibernate 中通过对 inverse 属性的来决定是由双向关联的哪一方来维护表和表之间的关系。 inverse = false 的为主动方,inverse = true 的为被动方,由主动方负责维护关联关系。在没有设置 inverse=true 的情况下,父子两边都维护父子关系
  • 在 1-N 关系中,将 N 方设为主控方将有助于性能改善(如果要国家元首记住全国人民的名字,不是太可能,但要让全国人民知道国家元首,就容易的多)
  • 在 1-N 关系中,若将 1 方设为主控方,会额外多出 update 语句。插入数据时无法同时插入外键列,因而无法为外键列添加非空约束。

order-by 属性:

  • 如果设置了该属性,当 Hibernate 通过 select 语句到数据库中检索集合对象时,利用 order by 子句进行排序
  • order-by 属性中还可以加入 SQL 函数 例如: 图 3

key

设定与所关联的持久化类对应的表的外键

  • column: 指定关联表的外键名

one-to-many

设定集合属性中所关联的持久化类

  • class: 指定关联的持久化类的类名

Order.hbm.xml

<hibernate-mapping package="com.lihui.hibernate.double_n_1">
    <class name="Order" table="ORDERS">
        <id name="orderId" type="java.lang.Integer">
            <column name="ORDER_ID" />
            <generator class="native" />
        </id>
        <property name="orderName" type="java.lang.String">
            <column name="ORDER_NAME" />
        </property>
        <many-to-one name="customer" class="Customer" cascade="all" column="CUSTOMER_ID"></many-to-one>
    </class>
</hibernate-mapping>  

我最近在复习一下关于 Hibernate 关系映射的知识,看了书本的介绍以及视频。这几篇博客都是对学到知识的一点总结。当然,这些这是最基本的能够实现关联关系的配置,在实际的使用中,还有很多参数需要根据情况来设置。但也算是对以后开发过程中遇到遗忘的地方可以进行查阅。

在本文中使用的 Demo 也都已经上传到 github 中,里边有详细的运行说明。

Github 地址: HibernateRelationMapping

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

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

发布评论

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