千家信息网

Hibernate映射关联是什么

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要讲解了"Hibernate映射关联是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Hibernate映射关联是什么"吧!Hiberna
千家信息网最后更新 2025年11月11日Hibernate映射关联是什么

这篇文章主要讲解了"Hibernate映射关联是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Hibernate映射关联是什么"吧!

Hibernate映射关联关系和我们现实世界里事物的关联关系一样。比如在UML语言中,以客户Customer和订单Order的关系为例。一个客户可以发送多个订单, 而一个订单只能属于一个客户,这是一对多的关联,因此可以成为单向关联。如果同时包含了两两种关联关系,就成为双向关联。在关系数据库中只有外键参照主键的关系。所以关系数据库实际上至支持一对一,或一对多的单向关系。在类于类之间的关系中。要算多对一关系和数据库中的外键参照主键关系最匹配了。因此如果使用单向关联从订单到客户的多对一单向关联,在订单类中就要定义一个客户的属性。表示这个订单属于哪个客户,而客户类就无需定义存放订单的集合属性了。下面写一个简单的例子。

//首先定义客户类  public class Customer implements Sreializable {  private Long id;  private String name;  //省略属性的访问方法  }  //然后定义订单类  public class Order implements Sreializable {  private Long id;  private String orderName;  private Customer customer;  //省略属性的访问方法,要注意的是Customer的访问方法.  }

Customer类的所有属性和CUSTOMERS表的所有属性一一对应,创建起来就比较简单了。下面主要看一下Order类的映射文件。

  

因为customer属性是是Customer类型,而ORDERS表的CUSTOMER_ID是整数类型,是不匹配的。所以我们不能用普通的元素来定义,而我们需要使用元素来配置了。

  1. <many-to-one name=\"customer\" column=\
    "CUSTOMER_ID\" class=\"包名.Customer\" not-null=\"true\"/>

< many-to-one>元素负责建立Order订单类的customer属性和数据库中的CUSTOMER_ID外键字段之间的映射。
◆name:设定映射文件的属性名
◆column:设定和持久化类对应的表的外键名
◆class:设定持久化类的属性的类型,这里指定具体的类,也就是主键存在的类
◆not-null:设定为true表示customer属性不允许为null,默认是false,这个属性会影响到bhm2ddl工具,会为ORDERS 表的CUSTOMER_ID外键设置为不允许空的约束,但是不会影响到hbm2java工具生长java源代码。此外还会影响到Hibernate运行时的行为,在保存Order对象的时候会检查customer属性是否为null。用hbm2ddl编译之后得到的数据库文件如下:

  1. create table CUSTOMERS (

  2. ID bigint not null,

  3. NAME varchar(15),

  4. primary key (ID)

  5. );

  6. create table ORDERS (

  7. ID bigint not null,

  8. ORDER_NUMBER varchar(15),

  9. CUSTOMER_ID bigint not null,

  10. primary key (ID)

  11. );

  12. alter table ORDERS add index FK8B7256E516B4891C (CUSTOMER_ID), add constraint
    FK8B7256E516B4891C foreign key (CUSTOMER_ID) references CUSTOMERS (ID);

看到结果我们可以简单的把理解为在数据库中,创建外键的作用。上边这个例子就简单的演示了Hibernate映射关联关系,至于一对多的关联关系比这个稍微复杂一点。而且可以看出,当Hibernate持久化一个临时对象的时候,在默认的情况下它不会自动持久化关联其他临时对象,而是会抛出TransientObjectException异常。如果希望Hibernate持久化对象的时候也自动持久化说关联的对象,就要把元素的cascade属性设置为save-update,表示级联操作的意思,cascade属性的默认值为none。当这个属性设置OK了。数据库就实现了级联保存更新的操作。

感谢各位的阅读,以上就是"Hibernate映射关联是什么"的内容了,经过本文的学习后,相信大家对Hibernate映射关联是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

关联 属性 订单 客户 数据 数据库 对象 元素 单向 文件 方法 时候 类型 学习 影响 之间 例子 内容 工具 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 濮阳软件开发科技公司 数据库主键的语法 初中校园网络安全活动总结 在ppt中如何加入数据库 服务器管理器无法加载服务列表 使命召唤手游国际服服务器哪国的 软件开发运维合作协议 银行网络安全ppt课件 网络安全与信息化专业有哪些 剑维软件开发 幻塔不能一直切换服务器吗 淘宝图片存储服务器在哪里删除 玩客云改装外网打印机服务器 为什么联通无法连接服务器 中小孚生家庭教育与网络安全 我的世界手机版锁屏服务器不退出 广东互联网软件开发资格 cs 1.6服务器 城厢语嫣网络技术公司 广东服务器阵列卡芯片云主机 王者为什么服务器没响应 论文中数据库模型图是什么格式 万项科技互联网平台 家政类app软件开发 海南东塔网络安全学院白盒测试 ceac软件开发 山东省智维软件开发有限公司 数据中心网络技术面试题 网络游戏为什么要有服务器 syslog配置多个服务器
0