Entityオブジェクトのクローン
SpringBootで機能の実装をしている中で、Entityオブジェクトのクローンを作りたくなることはありませんか?
例えばコピー機能などを想像してみてください。
いちいちオブジェクトをnewして、同じ値を全てsetして保存する...そんな方法でもできますが、綺麗なやり方ではないですよね。
属性が多ければsetの漏れも出るかもしれません。
そんな時、Entityオブジェクトのcloneを使えば、楽にクローンを作ることができます。
クローンをしたいEntityクラスにCloneableインターフェースを実装
例えばtestEntityをクローンする場合、まずは以下のようにCloneableインターフェースを継承します。
@Entity public class testEntity implements Cloneable {
これを忘れると、後々以下のようなエラーが発生するので気をつけてください。
CloneNotSupportedException
そして以下のようにEntityにcloneメソッドを追加します。
※引数の「User user」や各種setはもちろんなくても大丈夫です。あくまで以下のようなことができるという参考にしてください。
public testEntity clone(User user) throws CloneNotSupportedException { TestEntity cloneTestEntity = (TestEntity) super.clone(); cloneTestEntity.setId(null); // 新規のエンティティの場合はidをnullにしておきましょう。そうしないとクローン元のオブジェクトの上書きになってしまいます。 cloneTestEntity.setCreatedUser(user); // 例えばこのuserのように引数をセットすることが可能です。 cloneTestEntity.setCreatedAt(new Date()); return cloneTestEntity; }
クローンメソッドの呼び出し
あとは以下のようにcloneメソッドを呼び出せばクローンを取得することが可能になります。
originalTestEntityはクローン元のオブジェクトになります。
TestEntity testEntity = originalTestEntity.clone(user);
Fire TV Stick 4K - Alexa対応音声認識リモコン付属
- 発売日: 2018/12/12
- メディア: エレクトロニクス
Fire HD 10 タブレット (10インチHDディスプレイ) 64GB - Alexa搭載
- 発売日: 2017/10/11
- メディア: エレクトロニクス