Hibernate中的多对一单向映射关系

  前边我们讲过了Hibernate的hbm.xml文件,这是一个描述Java中类和数据库中表之间映射关系的文件。我们具体讲了几个节点hibernate-mapping,class,id,property和时间日期映射关系,大对象映射关系这三点的内容。

  对于hibernate-mapping我们可以为其添加属性package指明以下的使用到的类默认在这个包下,就不用写类的全类名了。对于class这个节点,我们可以通过指定属性dynamic-insert和dynamic-update来采取动态插入和动态更新的操作数据库的策略,同时还可以指定属性update-before-select=true在更新游离对象时检验是否发送update语句。id这个节点描述的是类中的属性和表中的主键的对象标识符的映射关系。其中需要注意的是其子节点generator来描述表中的主键的生成方式,通常我们采用native的生成方式,即根据数据库本地的策略采取identify,sequence,hilo等策略来指定主键的生成策略。property这个节点描述的是Java普通属性和表中普通字段的映射关系,他有acess(指定或者去类属性的方式、type(指定属性的类型)、unique(指定该属性对应的列添加一个唯一约束)、update(指定该字段是否可改)、index(指定该列名上的索引)、formula(指定该列是通过什么样的SQL表达式生成的)。

  对于时间日期类型的映射,因为java.util.Date是所有时间日期类型的父类,所以可匹配任意类型,所以我们在声明Java类中时间日期类型的属性时,采用java.util.Date类型

  对于大对象来说,我们一般不将其存入数据库,而是通过在数据库中指定一个url或者path指向存放于程序目录下的大文件,如:图片,大文本(长度超过255字节)。

  今天我们来讲一讲Hibernate中的单向多对一的关联关系。

  在领域模型中,类与类之间最普遍的关系就是关联关系,而且,关联是有方向的。

  1.我们一Order和Customer为例:

  需求:多个订单可以对应一个客户

  域模型:Order类中存在一个Customer的引用变量

  数据关系模型:orders表中存在一个外键指向customers表中的主键

  其中,最关键的一步就是如何将Order类中的Customer属性描述成指向customers表的主键的外键

  <many-to-one name="Order类customer属性名" class="属性的类型" >

      <column name = "customers表的主键CUSTOMER_ID">

  </many-to-one>  .

  2.测试生成的多对一关联关系的CURD操作

  ① 保存:两个对象

  当我们先保存外键的一端时,会发送两条insert,一条update因为这个对象在进数据库时不确定主键,等到含主键的对象插入后,再更新外键对象的关联关系。若是先保存不含外键的一端,则两条insert。从效率上来看,我们应该先插入一的不含外键的一端的对象

  ② 查询

  当我们查询函外键的一端时,默认只会查询多一端的对象,当我们使用多端对象关联的一端的对象时,才会发送SQL将一端的对象也查询出来。这种方式成为延迟加载,又叫懒加载,当我们在获取一端对象前将session关闭了,就会发生懒加载异常

  默认通过多端对象获取的一端对象时Hibernate提供的一个代理对象。

  ③ 删除

  当我们删除一个多的一端的对象时,是没有问题,但是当我们删除一个一的一端的对象时,在不设置级联情况下,若这条数据在多的一端有对应的外键进行关联,那么就是不可以删除的。即自身主键被其他表的外键依赖时,这个对象是不可以删除的,除非我们设置级联属性将关联的数据对象一起删除。

 

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值