内容简介:在实施@OneToMany双向关系时,有很多方法会搞砸。这里说明一下最佳实践方式:关键点:源代码可以在
在实施@OneToMany双向关系时,有很多方法会搞砸。这里说明一下最佳实践方式:
关键点:
- 始终从父级到子级实现级联
- 在父类上使用mappedBy
- 在父类上使用orphanRemoval以删除父类不再引用的子类
- 在父类上使用helper方法可以使关联的两端保持同步
- 始终使用延迟提取
- 使用自然/业务key或使用实体标识符并覆盖equals(),hashCode()如此 处所示
源代码可以在 这里 找到 。
父类: @Entity <b>public</b> <b>class</b> Tournament 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; @OneToMany(cascade = CascadeType.ALL, mappedBy = <font>"tournament"</font><font>, orphanRemoval = <b>true</b>) <b>private</b> List<TennisPlayer> tennisPlayers = <b>new</b> ArrayList<>(); </font>
子类: @Entity <b>public</b> <b>class</b> TennisPlayer 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; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = <font>"tournament_id"</font><font>) <b>private</b> Tournament tournament; <b>public</b> Long getId() { <b>return</b> id; } <b>public</b> <b>void</b> setId(Long id) { <b>this</b>.id = id; } <b>public</b> String getName() { <b>return</b> name; } <b>public</b> <b>void</b> setName(String name) { <b>this</b>.name = name; } <b>public</b> Tournament getTournament() { <b>return</b> tournament; } <b>public</b> <b>void</b> setTournament(Tournament tournament) { <b>this</b>.tournament = tournament; } @Override <b>public</b> <b>boolean</b> equals(Object obj) { <b>if</b> (<b>this</b> == obj) { <b>return</b> <b>true</b>; } <b>if</b> (!(obj instanceof TennisPlayer)) { <b>return</b> false; } <b>return</b> id != <b>null</b> && id.equals(((TennisPlayer) obj).id); } @Override <b>public</b> <b>int</b> hashCode() { <b>return</b> 2018; } } </font>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
史蒂夫·乔布斯传
[美] 沃尔特·艾萨克森 / 管延圻、魏群、余倩、赵萌萌、汤崧 / 中信出版社 / 2011-10-24 / 68.00元
这本乔布斯唯一授权的官方传记,在2011年上半年由美国出版商西蒙舒斯特对外发布出版消息以来,备受全球媒体和业界瞩目,这本书的全球出版日期最终确定为2011年11月21日,简体中文版也将同步上市。 两年多的时间,与乔布斯40多次的面对面倾谈,以及与乔布斯一百多个家庭成员、 朋友、竞争对手、同事的不受限的采访,造就了这本独家传记。 尽管乔布斯给予本书的采访和创作全面的配合,但他对内容从不干......一起来看看 《史蒂夫·乔布斯传》 这本书的介绍吧!