如何通过Hibernate/JPA的Proxy实现父子关联的实体插入?

栏目: Hibernate · 发布时间: 6年前

内容简介:执行更多的SQL总是性能损失。重要的是努力尽可能地减少它们的数量,并且依赖于指向引用是一种易于使用的优化方式。当一个带有指向其父实体的子实体持久化并时,Proxy可能很有用。在这种情况下,从数据库中获取父实体(执行SELECT语句)是一种性能损失和无意义的操作。Hibernate可以为未初始化的Proxy设置外键值。关键点:

执行更多的 SQL 总是性能损失。重要的是努力尽可能地减少它们的数量,并且依赖于指向引用是一种易于使用的优化方式。

当一个带有指向其父实体的子实体持久化并时,Proxy可能很有用。在这种情况下,从数据库中获取父实体(执行SELECT语句)是一种性能损失和无意义的操作。Hibernate可以为未初始化的Proxy设置外键值。

关键点:

  • 依靠 EntityManager#getReference()
  • 在Spring中,使用 JpaRepository#getOne()
  • 在本例中使用,在Hibernate中使用 load()
  • 在这里案例源码中,我们有两个实体:Tournament并且TennisPlayer,一个tournament 可以有多个TennisPlayer(@OneToMany)。
  • 我们通过一个Proxy(这不会触发SELECT)获取tournament ,我们创建一个新的TennisPlayer并设置Proxy为该球员的tournament ,并且我们保存该球员(这将I触发tennis_player表中的NSERT)

输出样本:

  • 控制台输出将显示只有一个INSERT被触发,没有SELECT

源代码可以在 这里 找到 


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Apache Modules Book

The Apache Modules Book

Nick Kew / Prentice Hall PTR / 2007-02-05 / USD 54.99

"Do you learn best by example and experimentation? This book is ideal. Have your favorite editor and compiler ready-you'll encounter example code you'll want to try right away. You've picked the right......一起来看看 《The Apache Modules Book》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具