内容简介:@ElementCollection是Hibernate/JPA中代表父子关系的多方注释,但是没有@OrderColumn的@ElementCollection插入和删除容易出现性能损失,而使用@OrderColumn性能变得更好。本应用程序展示了没有@OrderColumn使用@ElementCollection可能导致的性能损失。父实体:
@ElementCollection是Hibernate/JPA中代表父子关系的多方注释,但是没有@OrderColumn的@ElementCollection插入和删除容易出现性能损失,而使用@OrderColumn性能变得更好。
本应用程序展示了没有@OrderColumn使用@ElementCollection可能导致的性能损失。
父实体:
@Entity <b>public</b> <b>class</b> ShoppingCart implements Serializable { <b>private</b> <b>static</b> <b>final</b> <b>long</b> serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) <b>private</b> Long id; <b>private</b> String name; @ElementCollection <b>private</b> List<String> products = <b>new</b> ArrayList<>();
这里的@ElementCollection并没有主键,@ElementCollection是映射到单独的数据表中。当你有很多插入和删除动作时,避免@ElementCollection,因为数据库为了实现加入或删除,得删除很多现有的行。数据表中数据项越多,性能损失越大。
测试源代码可以在 这里 找到 。
解决
通过添加@OrderColumn可以减少在集合尾部附近进行操作时的一些性能损失(例如,在集合末尾添加/删除)。主要是,位于添加/删除条目之前的所有元素都保持不变,因此如果我们影响靠近集合尾部的行,则可以忽略性能损失。
@Entity <b>public</b> <b>class</b> ShoppingCart implements Serializable { <b>private</b> <b>static</b> <b>final</b> <b>long</b> serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) <b>private</b> Long id; @Column(name = <font>"name"</font><font>, nullable = false) <b>private</b> String name; @ElementCollection @OrderColumn(name = </font><font>"index_no"</font><font>) <b>private</b> List<String> products = <b>new</b> ArrayList<>(); </font>
测试源代码可以在 这里 找到
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- RDS性能降低 - 复盘 - Honeycomb
- c – 性能随着线程数量的增加而降低(无同步)
- Qt 5.12 LTS Beta 发布:改进性能,降低内存占用
- 了解 .NET 的默认 TaskScheduler 和线程池(ThreadPool)设置,避免让 Task.Run 的性能急剧降低
- Achronix Robert Blake:面向AI应用开发的Speedster7t,性能升级且成本大幅降低
- 降低模块间耦合
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Scratch少儿趣味编程
[ 日] 阿部和广 / 陶 旭 / 人民邮电出版社 / 2014-11 / 59.00元
Scratch 是麻省理工学院设计开发的一款编程工具,是适合少儿学习编程和交流的工具和平台,有中文版且完全免费。本书结合孩子们学习的语文、数学、科学、社会、音乐、体育等科目,手把手地教大家如何用Scratch 设计程序(如设计一个自动写作文的程序),配合各式卡通形象,通俗易懂,寓教于乐。麻省理工学院教授米切尔•瑞斯尼克作序推荐。 本书图文并茂,生动风趣,适合中小学生等初学者自学或在家长的帮助......一起来看看 《Scratch少儿趣味编程》 这本书的介绍吧!